Основные концепции потоков ввода -вывода
Потоки ввода -вывода используются для обработки передачи данных между устройствами
Java управляет данными через потоки
Объекты, используемые Java для эксплуатации потоков, разделены на два типа потоков на пакетах iO: байтовые потоки и потоки символов: входные потоки и выходные потоки.
Аннотация базовый класс для байтовых потоков: inputstream, outputstream
Аннотация базовый класс для потоков персонажей: читатель, писатель
ПРИМЕЧАНИЕ. Имена подкласса, полученные из этих 4 классов, являются суффиксами имен подкласса с именами их родительских классов.
Например: подкласс InputStream: FileInputStream
Например: подкласс читателя FileReader
Если вы создаете объект автора файла, после того, как объект будет инициализирован, файл, который для эксплуатации должен быть четко определен, и файл будет создан в указанном каталоге. Если в каталоге есть файл с тем же именем, он будет перезаписан.
Демонстрация:
пакет javase.day18; Импорт java.io.fileWriter; импортировать java.io.ioexception; открытый класс FileWriterDemo {public static void main (string [] args) {fileWriter fw = null; try {fw = new FileWriter ("c: //java_test//filewritertest.txt"); // Вызовите метод записи, чтобы записать строку в потоку FW.Write ("Alex Test23"); // свежи данные в буфере в потоке объект fw.flush (); } catch (ioException e) {e.printstackTrace (); } наконец {try {if (fw! = null) {// Закройте ресурс потока, но внутренний буфер будет обновляться один раз перед закрытием fw.close (); }}} catch (ioException e) {e.printstacktrace (); }}}} пакет javase.day18; Импорт java.io.fileWriter; импортировать java.io.ioexception; открытый класс FileWriterDemo {public static void main (string [] args) {fileWriter fw = null; try {fw = new FileWriter ("c: //java_test//filewritertest.txt"); // Вызовите метод записи, чтобы записать строку в потоку FW.Write ("Alex Test23"); // свежи данные в буфере в потоке объект fw.flush (); } catch (ioException e) {e.printstackTrace (); } наконец {try {if (fw! = null) {// Закройте ресурс потока, но данные во внутреннем буфере будут обновляться один раз перед закрытием fw.close (); }}} catch (ioException e) {e.printstacktrace (); }}}}Распечатайте исходный код демо -кода файла Java:
пакет javase.day18; Импорт java.io.filereader; импортировать java.io.ioexception; открытый класс fileReaderTest {public static void main (string [] args) {try {fileReader fr = new FileReader ("c: //java_test//systemdemo.java"); char [] buf = new char [1024]; int num = 0; while ((num = fr.read (buf))! =-1) {system.out.println (new String (buf, 0, num)); }} catch (ioException e) {e.printstacktrace (); }}} упаковка javase.day18; Импорт java.io.filereader; импортировать java.io.ioexception; открытый класс fileReaderTest {public static void main (string [] args) {try {fileReader fr = new FileReader ("c: //java_test//systemdemo.java"); char [] buf = new char [1024]; int num = 0; while ((num = fr.read (buf))! =-1) {system.out.println (new String (buf, 0, num)); }} catch (ioException e) {e.printstacktrace (); }}} Скопируйте демо -код файла:
Метод, используемый для copy_1 (), предназначен для чтения символа и написать символ.
Метод, используемый copy_2 (), предназначен для чтения символов в массив символов одновременно и, наконец, снова написать их в целевой файл.
пакет javase.day18; Импорт java.io.filereader; Импорт java.io.fileWriter; импортировать java.io.ioexception; открытый класс copyText {public static void main (string [] args) {try {copy_1 (); } catch (ioException e) {e.printstackTrace (); }} public static void copy_1 () Throws ioException {fileWriter fw = new FileWriter ("c: //java_test//copy_systemdemo.java"); FileReader fr = new FileReader ("c: //java_test//systemdemo.java"); int num = 0; while ((num = fr.read ())! =-1) {fw.write (num); } fw.close (); fr.close (); } public static void copy_2 () бросает ioException {fileWriter fw = new FileWriter ("c: //java_test//copy_systemdemo.java"); FileReader fr = new FileReader ("c: //java_test//systemdemo.java"); int num = 0; char [] buf = new char [1024]; while ((num = fr.read (buf))! =-1) {fw.write (buf, 0, num); } fw.close (); fr.close (); }} упаковка javase.day18; Импорт java.io.filereader; Импорт java.io.fileWriter; импортировать java.io.ioexception; открытый класс copyText {public static void main (string [] args) {try {copy_1 (); } catch (ioException e) {e.printstackTrace (); }} public static void copy_1 () Throws ioException {fileWriter fw = new FileWriter ("c: //java_test//copy_systemdemo.java"); FileReader fr = new FileReader ("c: //java_test//systemdemo.java"); int num = 0; while ((num = fr.read ())! =-1) {fw.write (num); } fw.close (); fr.close (); } public static void copy_2 () бросает ioException {fileWriter fw = new FileWriter ("c: //java_test//copy_systemdemo.java"); FileReader fr = new FileReader ("c: //java_test//systemdemo.java"); int num = 0; char [] buf = new char [1024]; while ((num = fr.read (buf))! =-1) {fw.write (buf, 0, num); } fw.close (); fr.close (); }} Буфер для потоков символов:
Появление буферов улучшает эффективность чтения и записи данных.
Соответствующие классы: BufferedWriter, BufferedReader.
Буфер должен быть объединен с потоком, прежде чем его можно будет использовать.
Функция потока усиливается на основе потока.
Основные правила операции по потоку ввода -вывода:
1. Очистите источник и цель:
Источник: входной поток, читатель
Цель: outputstream, писатель
2. Является ли данные операции простым текстом:
Да: Поток символов №: байтовый поток: (1) При использовании считывателя для входного потока символов
(2) Используйте inputstream для потока входных байтов
(3) Используйте писатель для потока выходных символов
(4) При использовании outputStream для потока выходного байта выходного байта
3. Когда система ясна, затем проясните, какой конкретный объект использовать:
Устройство источника: память, жесткий диск, назначение клавиатуры: память, жесткий диск, консоль
IO операционный класс инструментов
[1] String FileReaderStringHandle (String FileName)
Прочитайте файл (указанный по имени файла) в строку;
[2] Byte [] FileReaderByteHandle (String FileName)
Прочитайте файл (указанный по имени файла) в массив байтов;
[3] void fileWriterHandle (String FileName, String Text)
Записывает строку (указанную текстом) в файл (указанный по имени файла).
Ioutil.java
Импорт java.io.bufferedinptstream; import java.io.bufferedReader; импорт java.io.file; импорт java.io.fileinputstream; импорт java.io.filereader; импорт java.io.ioexcept Метод считывания) * * @param filename * @return String */ public Static String filereaderStingHandle (string filename) {StringBuilder sb = new StringBuilder (); try {BufferedReader in = new BufferedReader (новый FileReader (новый файл (имя файла) .getAbSolutefile ())); try {string s; while ((s = in.readline ())! = null) {sb.append (s); sb.append ("/n"); }} наконец {in.close (); }} catch (ioException e) {бросить новое runtimeexception (e); } вернуть sb.toString (); } / ** * Используйте FileInputStream+BufferedInputStream для обработки файлов в байтовом пути * * @param filename * @return byte [] * / public static byte [] fileDeaderByThandle (String filename) {byte [] data = null; try {bufferedinputstream bf = new BufferedInputStream (new FileInputStream (имя файла)); try {data = new Byte [bf.available ()]; bf.read (data); } наконец {bf.close (); }} catch (ioException e) {бросить новое runtimeexception (e); } вернуть данные == null? новый байт [] {}: data; } / ** * Запишите указанный текст в файл с именем Filename * * @param filename * @param text * / public static void fileWriterHandle (String FileName, String Text) {try {printWriter out = new PrintWriter (new File (fileName) .getAbSoluteFile ()); try {out.print (text); } наконец {out.close (); }} catch (ioException e) {бросить новое runtimeexception (e); }} public static void main (string [] args) бросает ioException {System.out.print (fileDerderStingHandle ("src/ioutil.java")); для (Byte B: FileReaderByteHandle ("src/ioutil.java")) System.out.print (b); FileWriterHandle ("zj.txt", filereaderstringhandle ("src/ioutil.java")); }}