Пример. Символьные потоки. Пример 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": Пример
Разместим представленный выше код в файле ReadConsole. java и попробуем скомпилировать и выполнить его согласно тому, как это представлено в следующей программе. Данная программа продолжает чтение и вывод одного и того же символа до нажатия 'q': $javac ReadConsole. java$java ReadConsoleВведите символы, 'q' для выхода. proglang. suproglang. suqqЧтение и запись файла Как было указано выше, поток представляет собой последовательность данных. InputStream используется для считывания данных с источника, OutputStream служит для записи данных по месту назначения. Ниже представлена иерархия классов для управления потоками Ввода и Вывода. В данном уроке нам предстоит рассмотреть два важных потока: FileInputStream и FileOutputStream.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|