JAVA 47th-IO stream (1): file read/write
Input stream and output stream relative to memory
Read data from external devices to memory: Input
Write data in memory to external devices: Output
I/O streams often use base classes
Abstract base class of byte stream: InputStream, OutputStream
Abstract base class of characters: Reader and Writer
PS: The child classes generated by these four schools are suffixed with the parent class name.
For example, FileInputStream, a derived class of InputStream, and FileReader, a derived class of Reader.
PS: for text-based data, ignore streams should be given priority, and data should be written from memory to hard disk as Writer
FileWriter class
Demo: Saving text to a hard disk (FileWriter)
Import java. io. fileWriter; import java. io. IOException; public class Main {public static void main (String [] args) throws IOException {// if the object does not exist, it is automatically created and exists, it will overwrite FileWriter fw = new FileWriter ("Demo.txt"); // throw an exception // call the write method in the Writer to write data, but the data is actually written to the fw in the temporary storage buffer. write ("hello"); // use the flush method to refresh the buffer of the stream. If the stream has saved all the characters of various write () methods in the buffer, it is immediately written to the expected target. Fw. flush (); // you can use it multiple times // close the resource // close the stream to close the resource. Call flush to refresh the data in the buffer to the destination before closing the resource. // API documentation: close the stream, but refresh it first. // After closing the stream, calling write () or flush () will throw an IOException. Disabled previously disabled streams are invalid. Fw. close (); // can be used only once }}
Details
Import java. io. fileWriter; import java. io. IOException; public class Main {private static final String LINE_SEPARATOR = System. getProperty ("line. separator "); public static void main (String [] args) throws IOException {FileWriter fw = new FileWriter (" Demo.txt ", true); // constructor, adding "true" can implement the continued write of the file fw. write ("hello" + LINE_SEPARATOR + "world"); // The line feed in Windows is \ r \ n, and in Linus is \ nfw. write (LINE_SEPARATOR + "ads"); fw. flush (); fw. close ();}}
Basic stream Exception Handling
Create a reference outside try and create an object in it,When disabling the function, you must determine whether it is a null pointer.
Import java. io. fileWriter; import java. io. IOException; public class Main {private static final String LINE_SEPARATOR = System. getProperty ("line. separator "); public static void main (String [] args) {FileWriter fw = null; try {fw = new FileWriter (" z: \ Demo.txt ", true ); // If an unfound address is input, two exceptions will be thrown. // The file exception and NULL pointer exception will not be found. Therefore, in finally part, add a sentence to determine whether it is a null pointer fw. write ("hello" + LINE_SEPARATOR + "world"); fw. flush ();} catch (Exception e) {System. out. p Rintln (e. toString ();} finally {// try again last time to process if (fw! = Null) {try {fw. close () ;}catch (IOException e) {throw new RuntimeException ("failed to close ");}}}}}
FileReader class
Read a text file and print the read data to the console.
Import java. io. fileReader; import java. io. IOException; public class Main {public static void main (String [] args) throws IOException {// ensure that the file is an existing FileReader fr = new FileReader ("g: \ java \ Main \ Demo.txt "); // The file content is the AB // read method, which is used as an integer to read characters ranging from 0 to 65535 (0x00-0xffff ), if the end of the stream is reached,-1 // int c = fr is returned. read (); // System. out. println (char) c); // int c1 = fr. read (); // System. out. println (char) c1); // int c2 = fr. read () ; // System. out. println (c2); //-1int temp; while (temp = fr. read ())! =-1) {System. out. println (temp) ;}fr. close ();}}
The read () method also involves reading arrays in the form of overloading: High Efficiency
Import java. io. fileReader; import java. io. IOException; public class Main {public static void main (String [] args) throws IOException {FileReader fr = new FileReader ("g: \ java \ Main \ Demo.txt "); // The file content is abcdef // use read (char [] a) to read text file data/** create a character array first, * // char ch [] = new char [5]; // int num = fr. read (ch); // store the characters read to the array. num indicates the number of characters. // System. out. println (num + ":" + new String (ch); // 5: abcde // int num1 = fr. read (ch ); // Store the characters to the array. // System. out. println (num1 + ":" + new String (ch); // 1: fbcde // This is equivalent to f replacing a in the original array, the txt file has no data, so the remaining array elements are still in the // int num2 = fr. read (ch); // No data is read again, so-1 is returned, and the char array is not overwritten. // System. out. println (num2 + ":" + new String (ch); //-1: fbcde // int num = 0; char [] ch = new char [5]; // The length of the array is preferably 1024 * nwhile (num = fr. read (ch ))! =-1) {System. out. println (new String (ch, 0, num);} fr. close ();}}