Thoroughly understand the Java IO system (transferred from: keys

zhaozj2021-02-12  178

One. INPUT and OUTPUT1. Stream represents any data source that has the ability to output data, or any capacity to receive data receiving source. In Java's IO, all streams include two types: 1.1 Byte-oriented stream in byte-oriented Stream, indicating bytes, read or read from Stream in bytes or Write information into the stream. Byte oriented stream comprises the following types: 1) input stream: 1) ByteArrayInputStream: the use of a buffer memory 2) StringBufferInputStream as InputStream: a String object to a InputStream3) FileInputStream: to a file as InputStream Realize the reading operation of the file 4) PipedinputStream: implements the concept of PIPE, mainly in the thread 5) SEQUENCEINPUTSTREAM: Multiple InputStream is merged into an inputStream2) BYTEARRAYOTPUTSTREAM: put information into a buffer in memory District 2) FileOutputStream: PipedputStream: PipedputStream: Implement the concept of PIPE, mainly in the thread 4) SEQUENCEOTPUTSTREAM: Multiple OutStream merge into an outstream1.2 in Unicode Character-oriented Stream in Unicode Character-oriented Stream indicates that the information is read from the stream in units in Unicode characters to the stream. In Unicode character oriented stream comprises the following types: 1) Input Stream1) CharArrayReader: corresponds with ByteArrayInputStream 2) StringReader: corresponds with StringBufferInputStream 3) FileReader: corresponds with FileInputStream 4) PipedReader: corresponds with PipedInputStream 2) Out Stream1) CharArrayWrite : Corresponding to byterrayoutputstream 2) StringWrite: Corresponding to byte-oriented Stream3) FileWrite: with FileoutPutStream Corresponds 4) PiPedWrite: The word corresponding to the PiPedoutputStream corresponds to the word. Section-oriented stream. The two corresponding classes implementation are the same, the word is different during operation. For example, CharaRrayReader: and ByTearRayinputStream uses a buffer in memory as an inputStream, which is different that the former reads a byte information from memory, while the latter reads a character from memory. 1.3 Conversion between two unsampicated streams InputStreamReader and OutputStreamReader: Convert a byte-oriented Stream into a character-oriented Stream. 2. Stream Add Properties 2.1 "Add Property for Stream Add Properties" to operate the IO's API in the Java described above, we can complete any operation we want to complete. But through the subclasses of FilterInputStream and FilterOutstream, we can add properties to Stream. The following examples illustrate the function of this function.

If we want to write data into a file, we can do this: FileoutStream Fs = New FileoutStream ("Test.txt"); then you can call the Write () function to call the west.txt file by generating FS objects. Data. However, if we want to implement "first to write the data to the file first caching into memory, then the API above the data is written in the file", the above API does not have a meeting to meet our needs. But add our needs to FileoutStream through FilterInputStream and FilteroutStream. 2.2 FilterInputStream's various types 2.2.1 for encapsulation of bytes-oriented InputStream1) DataInputStream: Read basic types (int, char, etc.) data from Stream. 2) BufferedInputStream: Using the buffer 3) LINENUMBERINPUTSTREAM: The number of rows within the input stream can then call getLineNumber () and setLinenumber (int) 4) PushbackInputStream: Little use, generally used for compiler development 2.2.2 There is no class corresponding to the DataInputStream in the package with character-oriented InputStream1). Unless the switch is to be used in BufferedReader readLine (), otherwise the DataInputStream2) BufferedReader: correspondence with BufferedInputStream 3) LineNumberReader: corresponds with LineNumberInputStream 4) PushBackReader: 2.3 FilterOutStream corresponding to the various types PushbackInputStream bytes for packaging 2.2.3 Oriented OutputStream1) DataiOutstream: Outputs Basic Types (INT, CHAR, etc.) data into Stream.

2) BufferedOutstream: Using Buffer 3) PrintStream: Generates Format Output 2.2.4 Used to Pack the Character-oriented OutputStream1) BUFFEREDWRITE: and Correspondence 2) PrintWrite: with the corresponding 3. RandomaccessFile1) You can complete the file via the RandomaccessFile object. Read and write operation 2) When an object is generated, indicate the nature of the file to be opened: R, read-only; W, write only; RW Readable Writing 3) You can directly jump to the location specified in the file 4. I / O An example of application iMport java.io. *; Public class testio {public static void main (string [] args) throws ioException {// 1. Read data from a file from a file BufferedReader in = New BufferedReader (New FileReader "F: //nepalon/testio.java"); string s, s2 = new string (); while ((s = in.readline ())! = Null) S2 = s "/ n"; In.close (); // 1b. Enter the input bufferedreader stdin = new buffrereader ("Enter a line:"); System.Out.println ("Enter a line:"); system.out.println (stdin); system.out.println (stdin) .readline ()); // 2. Read data from a string object StringReader in2 = new stringReader (S2); int C; while ((c = in2.read ())! = -1) System.out. Println ((char) c); in2.close (); // 3. Remove the format input from the memory Try {DataInputStream in3 = New DataNputStream (New ByTearrayInputStream (s2.getbytes ()); while (true) system.out .println ((char) in3.readby ());} catch (eofexception e) { System.out.println ( "End of stream");} // 4 to a file try {BufferedReader in4 = new BufferedReader (new StringReader (s2));. PrintWriter out1 = new PrintWriter (new BufferedWriter (new FileWriter ( "F : // Nepalon // Testio.Out ")); int linecount = 1; while ((s = in4.readline ())! = null) Out1.println (LineCount ": s); Out1.close (); in4.close ();} catch (eofexception ex) {system.out.println ("end of stream");} // 5. Data storage and recovery try2 = new dataputstream (New Bufferedputstream (New Bufferedputstream (New Bufferedputstream New fileOutputStream ("f: // nepalon // data.txt"

))))); Out2.writeDouble (3.1415926); Out2.writechars ("/ nthas WAS PI: Writechars / N); Out2.WriteBytes (" Thas Was Pi: WritebyTe / ​​N); out2.close (); DataInputStream IN5 = new DataInputStream (new BufferedInputStream (new FileInputStream ( "F: // nepalon // Data.txt"))); BufferedReader in5br = new BufferedReader (new InputStreamReader (in5)); System.out.println (in5.readDouble () ); System.out.println (in5br.readline ()); system.out.println (in5br.readline ());} catch (eofexception e) {system.out.println ("end of stream");} / / 6. RandomaccessFile RF = new randomaccessfile ("f: // Nepalon // RTest.dat", "RW"); for (int i = 0; i <10; i ) RF.WRITEDOUBLE (i * 1.414); rf.close (); rf = new randomaccessFile ("f: // nepalon // rtest.dat", "r"); for (int i = 0; i <10; i ) system.out.println ("Value" i ":" rf.readdouble ()); rf.close (); rf = new randomaccessfile ("f: // nepalon // rtest.dat", "rw"); RF.Seek (5 * 8); rf.writedouble (47.0001); rf.close (); rf = new randomaccessfile ("f: // nepalon // rtest.dat", "r"); for (int i = 0; i <10; i ) system.out.p RINTLN ("Value" i ":" rf.readdouble ()); rf.close ();}} About the code (in the area): 1 area, when reading the file, The file content reads into the cache, when invoing IN.Readline (), then read data (hereinafter referred to as "cache byte reading mode) from the cache in characters. In the 1b area, since the data is read from the standard IO (keyboard) from the standard IO (keyboard) by cache byte reading, the standard IO (system.in) is first converted to the Character-oriented Stream, and then the BUFFEREDReader package is performed. In the zone, you should read data from a String object in a form of characters, so a StringReader type Stream is created.

转载请注明原文地址:https://www.9cbs.com/read-7010.html

New Post(0)