Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример. Символьные потоки. Пример import java.io.*;public class FileCopy { public static void main(String args[]) throws IOException {       FileInputStream fileIn = null; FileOutputStream fileOut = null; try {   




Пример

import java. io. *; public class FileCopy { public static void main(String args[]) throws IOException {       FileInputStream fileIn = null; FileOutputStream fileOut = null; try {    fileIn = new FileInputStream(" file. txt" );     fileOut = new FileOutputStream(" copied_file. txt" );              int a;     // Копирование содержимого файла file. txt    while ((a = fileIn. read())! = -1) {       fileOut. write(a); // Чтение содержимого файла file. txt и запись в файл copied_file. txt    } }finally {    if (fileIn! = null) {       fileIn. close();     }    if (fileOut! = null) {       fileOut. close();     } } }}

Теперь рассмотрим файл file. txt со следующим содержимым:

Содержимое файла file. txt

В качестве следующего шага необходимо скомпилировать java-программу и выполнить ее, что позволит создать файл copied_file. txt с тем же содержимым, что имеется в file. txt. Таким образом, разместим обозначенный код в файле FileCopy. java и выполним следующее действие:

$javac FileCopy. java$java FileCopy

Символьные потоки

Потоки байтов в Java позволяют произвести ввод и вывод 8-битных байтов, в то время как потоки символов используются для ввода и вывода 16-битного юникода. Не смотря на множество классов, связанных с потоками символов, наиболее распространено использование следующих классов: FileReader и FileWriter. Не смотря на тот факт, что внутренний FileReader использует FileInputStream, и FileWriter использует FileOutputStream, основное различие состоит в том, что FileReader производит считывание двух байтов в конкретный момент времени, в то время как FileWriter производит запись двух байтов за то же время.

Мы можем переформулировать представленный выше пример, в котором два данных класса используются для копирования файла ввода (с символами юникода) в файл вывода.

Примечание по примеру: чтобы скопировать файл, необходимо в папке проекта создать файл file. txt с любым или пустым содержимым.

Пример

import java. io. *; public class FileCopy { public static void main(String args[]) throws IOException { FileReader fileIn = null; FileWriter fileOut = null; try {    fileIn = new FileReader(" file. txt" );     fileOut = new FileWriter(" copied_file. txt" );              int a;     while ((a = fileIn. read())! = -1) {       fileOut. write(a);     } } finally {    if (fileIn! = null) {       fileIn. close();     }    if (fileOut! = null) {        fileOut. close();     } } }}

Теперь рассмотрим файл file. txt со следующим содержимым:

Содержимое файла file. txt

В качестве следующего шага необходимо скомпилировать программу и выполнить ее, что позволит создать файл copied_file. txt с тем же содержимым, что имеется в file. txt. Таким образом, разместим обозначенный код в файле FileCopy. java и выполним следующее действие:

$javac FileCopy. java$java FileCopy

Стандартные потоки

Все языки программирования обеспечивают поддержку стандартного ввода/вывода, где программа пользователя может произвести ввод посредством клавиатуры и осуществить вывод на экран компьютера. Если вы знакомы с языками программирования C либо C++, вам должны быть известны три стандартных устройства STDIN, STDOUT и STDERR. Аналогичным образом, Java предоставляет следующие три стандартных потока:

· Стандартный ввод – используется для перевода данных в программу пользователя, клавиатура обычно используется в качестве стандартного потока ввода, представленного в виде System. in.

· Стандартный вывод – производится для вывода данных, полученных в программе пользователя, и обычно экран компьютера используется в качестве стандартного потока вывода, представленного в виде System. out.

· Стандартная ошибка – используется для вывода данных об ошибке, полученной в программе пользователя, чаще всего экран компьютера служит в качестве стандартного потока сообщений об ошибках, представленного в виде System. err.

Ниже представлена простая программа, которая создает InputStreamReader для чтения стандартного потока ввода, до введения пользователем " q":

Пример

import java. io. *; public class ReadConsole { public static void main(String args[]) throws IOException { InputStreamReader inStRe = null; try {    inStRe = new InputStreamReader(System. in);     System. out. println(" Введите символы, символ 'q' для выхода. " );     char a;     do {       a = (char) inStRe. read();        System. out. print(a);     } while(a! = 'q'); }finally {    if (inStRe! = null) {       inStRe. close();     } } }}

Разместим представленный выше код в файле ReadConsole. java и попробуем скомпилировать и выполнить его согласно тому, как это представлено в следующей программе. Данная программа продолжает чтение и вывод одного и того же символа до нажатия 'q':

$javac ReadConsole. java$java ReadConsoleВведите символы, 'q' для выхода. proglang. suproglang. suqq

Чтение и запись файла

Как было указано выше, поток представляет собой последовательность данных. InputStream используется для считывания данных с источника, OutputStream служит для записи данных по месту назначения.

Ниже представлена иерархия классов для управления потоками Ввода и Вывода.

В данном уроке нам предстоит рассмотреть два важных потока: FileInputStream и FileOutputStream.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...