Conceitos básicos de fluxos de IO
Os fluxos de IO são usados para processar a transmissão de dados entre dispositivos
Java opera dados através de fluxos
Os objetos usados pelo Java para operar fluxos são divididos em dois tipos de fluxos nos pacotes de IO: fluxos de bytes e fluxos de caracteres: fluxos de entrada e fluxos de saída.
Classe base abstrata para fluxos de bytes: InputStream, saída
Classe base abstrata para fluxos de personagens: leitor, escritor
NOTA: Os nomes de subclasse derivados dessas 4 classes são sufixos dos nomes da subclasse com os nomes da classe pai.
Por exemplo: Subclasse de InputStream: FileInputStream
Por exemplo: a subclasse do leitor FileReader
Se você criar um objeto FileWriter, depois que o objeto for inicializado, o arquivo a ser operado deve ser claramente definido e o arquivo será criado no diretório especificado. Se houver um arquivo com o mesmo nome no diretório, ele será substituído.
Demonstração:
pacote javase.day18; importar java.io.filewriter; importar java.io.ioException; classe public FileWriterDemo {public static void main (string [] args) {fileWriter fw = null; tente {fw = new FileWriter ("c: //java_test//filewritertest.txt"); // Ligue para o método de gravação e escreva a string no fluxo FW.WRITE ("Alex Test23"); // fresco os dados no buffer no objeto de fluxo fw.flush (); } catch (ioexception e) {e.printStackTrace (); } finalmente {tente {if (fw! = null) {// feche o recurso de fluxo, mas o buffer interno será atualizado uma vez antes de fechar o fw.close (); }}} catch (ioexception e) {e.printStackTrace (); }}}} pacote javase.day18; importar java.io.filewriter; importar java.io.ioException; classe public FileWriterDemo {public static void main (string [] args) {fileWriter fw = null; tente {fw = new FileWriter ("c: //java_test//filewritertest.txt"); // Ligue para o método de gravação para gravar a string no fluxo FW.WRITE ("Alex Test23"); // fresco os dados no buffer no objeto de fluxo fw.flush (); } catch (ioexception e) {e.printStackTrace (); } finalmente {tente {if (fw! = null) {// feche o recurso de fluxo, mas os dados no buffer interno serão atualizados uma vez antes de fechar o fw.close (); }}} catch (ioexception e) {e.printStackTrace (); }}}}Imprima o código -fonte do código de demonstração do arquivo java:
pacote javase.day18; importar java.io.fileReader; importar java.io.ioException; public class filereadestest {public static void main (string [] args) {try {fileReader fr = new fileReader ("c: //java_test//systemdemo.java"); char [] buf = novo char [1024]; int num = 0; while ((num = fr. }} catch (ioexception e) {e.printStackTrace (); }}} pacote javase.day18; importar java.io.fileReader; importar java.io.ioException; public class filereadestest {public static void main (string [] args) {try {fileReader fr = new fileReader ("c: //java_test//systemdemo.java"); char [] buf = novo char [1024]; int num = 0; while ((num = fr. }} catch (ioexception e) {e.printStackTrace (); }}} Copie o código de demonstração do arquivo:
O método usado para copy_1 () é ler um personagem e escrever um personagem.
O método usado por copy_2 () é ler os caracteres em uma matriz de caracteres ao mesmo tempo e finalmente escrevê -los no arquivo de destino novamente.
pacote javase.day18; importar java.io.fileReader; importar java.io.filewriter; importar java.io.ioException; classe pública copyText {public static void main (string [] args) {try {copy_1 (); } catch (ioexception e) {e.printStackTrace (); }} public static void copy_1 () lança 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 () lança 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 = novo char [1024]; while ((num = fr.read (buf))! =-1) {fw.write (buf, 0, num); } fw.close (); Fr.Close (); }} pacote javase.day18; importar java.io.fileReader; importar java.io.filewriter; importar java.io.ioException; classe pública copyText {public static void main (string [] args) {try {copy_1 (); } catch (ioexception e) {e.printStackTrace (); }} public static void copy_1 () lança 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 () lança 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 = novo char [1024]; while ((num = fr.read (buf))! =-1) {fw.write (buf, 0, num); } fw.close (); Fr.Close (); }} Buffer para fluxos de personagens:
O surgimento de buffers melhora a eficiência de leitura e gravação dos dados.
Classes correspondentes: BufferWriter, BufferredReader.
O buffer deve ser combinado com o fluxo antes que ele possa ser usado.
A função do fluxo é aprimorada com base no fluxo.
Regras básicas da operação de fluxo de IO:
1. Limpe a fonte e o objetivo:
Fonte: fluxo de entrada, leitor
Objetivo: OutputStream, escritor
2. Se os dados da operação são texto simples:
Sim: Stream de personagens não: Byte Stream é: (1) Ao usar o leitor para fluxo de caracteres de entrada
(2) Use o InputStream para entrada de bytes de entrada
(3) Use o escritor para fluxo de caracteres de saída
(4) Ao usar o outputStream para fluxo de bytes de saída
3. Quando o sistema estiver claro, esclareça qual objeto específico usar:
Dispositivo de origem: memória, disco rígido, dispositivo de destino do teclado: memória, disco rígido, console
IO Operation Tool Class
[1] String filereadertringHandle (nome do arquivo de string)
Leia o arquivo (especificado pelo nome do arquivo) em uma string;
[2] byte [] filereaderbyteHandle (nome do arquivo de string)
Leia o arquivo (especificado pelo nome do arquivo) em uma matriz de bytes;
[3] Void FileWriterHandle (nome do arquivo de string, texto da string)
Grava uma string (especificada por texto) em um arquivo (especificado pelo nome do arquivo).
Ioutil.java
importar java.io.bufferEnputStream; importar java.io.bufferedreader; importar java.io.file; importar java.io.fileInputStream; importar java.io.fileReader; o import -string; rumortriter; (fornecendo o método readline) * * @param filename * @return string */ public static string filereaderStringHandle (string filename) {stringbuilder sb = new StringBuilder (); tente {bufferredreader in = new BufferredReader (new FileReader (novo arquivo (nome do arquivo) .getabsolutefile ())); tente {string s; while ((s = in.readline ())! = null) {sb.append (s); sb.append ("/n"); }} finalmente {in.close (); }} catch (ioexception e) {lança nova runtimeException (e); } return sb.toString (); } / ** * Use FileInputStream+bufferInputStream para processar arquivos de uma maneira byte * * @param filename * @return byte [] * / public static byte [] filereaderbyteHandle (string filename) {byte [] data = null; tente {bufferInputStream BF = new BufferInputStream (new FileInputStream (nome do arquivo)); tente {data = new byte [bf.Available ()]; bf.read (dados); } finalmente {bf.close (); }} catch (ioexception e) {lança nova runtimeException (e); } retornar dados == nulo? novo byte [] {}: data; } / ** * Escreva o texto especificado em um arquivo chamado FileName * * @param filename * @param texto * / public static void FileWriterHandle (string filename, string text) {try {printWriter out = new PrintWriter (new File (filename) .getabsoluteFile ()); tente {out.print (text); } finalmente {out.close (); }} catch (ioexception e) {lança nova runtimeException (e); }} public static void main (string [] args) lança ioexception {System.out.print (fileReaderStringHandle ("src/ioutil.java")); para (byte b: filereaderbyteHandle ("src/ioutil.java")) system.out.print (b); fileWriterHandle ("zj.txt", fileReadertringHandle ("src/ioutil.java")); }}