Thoroughly understand the Java IO system [Repost]

xiaoxiao2021-03-06  41

Thoroughly understand the Java IO system [Repost]

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 both types include two types:

1.1 Byte-oriented Stream is written in bytes from the stream in bytes, in bytes, is written in bytes from 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: Deposit information in file 3) PipedputStream: Implement the concept of PIPE, mainly in the thread 4) SEQUENCEOUTSTREAM: Multiple OutStream merge into an Outstream

1.2 Stream-oriented Stream in Unicode characters

STREAM-oriented Stream indicates that the Unicode character is written from the Stream from 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 : Corresponds to byterrayoutputstream 2) StringWrite: Corresponding to byte-oriented Stream3) FILEWRITE: PiPedWrite: PipedWrite: Corresponds to PiPedoutPutStream

Based on character-oriented Stream basically correspond to byte-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 unscrupulous stream

InputStreamReader and OutputStreamReader: Convert a byte-oriented stream into a character-oriented Stream.

2. Stream adds attributes

2.1 "Add Property for Stream"

We can complete any operation we want to do with the API of the IO described above. 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 INPUTSTREAM1 (INT, CHAR, etc.) data is read from Stream. 2) BufferedInputStream: Using Buffer 3) LinenumberinputStream: The number of rows within the input stream will be recorded, and you can call getLineNumber () and setLineNumber (int) 4) PushbackInputStream: Little usage, generally used for compiler development

2.2.2 INPUTSTREAM for encapsulation with characters

1) There is no class corresponding to DataInputStream. Unless the switch is to be used in BufferedReader readLine (), otherwise the DataInputStream2) BufferedReader: correspondence with BufferedInputStream 3) LineNumberReader: corresponds with LineNumberInputStream 4) PushBackReader: corresponds with PushbackInputStream

2.3 Various types of FilterOutstReam

2.2.3 OutputStream used to encapsulate bytes

1) DataiOutstReam: Output basic types (int, char, etc.) data into the stream. 2) BufferedOutstream: Using buffer 3) PrintStream: Generate formatted output 2.2.4 Used to package OutputStream with character-oriented OutputStream

1) BUFFEREDWRITE: AND CORE 2) PrintWrite: and Correspondence 3. RandomaccessFile1) You can specify the nature of the file to be opened when you generate an object by randomaccessfile object 2) When an object is generated: R, read-only; w , Only write; RW readable and write 3) can jump directly to the location specified in the file

4. An example of I / O application Import java.io. *; Public class testio {public static void main (string [] args) throws oxtception {// 1. Read data from one 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. Entering the keyboard into bufferedreader stdin = new bufferedreader (system.in)); System.out.Println ("Enter a line:"); 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 formatting input from memory Try {DataInputStream in3 = New DataInputStream (New ByTearrayInputStream (s2.getbytes ()); while True) System.Out.println ((char) in3.Readbyte ());} catch (eofexception e) {system.out.println ("end of stream");} // 4. Output to file try {bufferedreader in4 = New stringReader (New StringReader (S2)); PrintWriter Out1 = New PrintWriter (New FileWriter (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 FileoutputStream (New FileoutputStream (New FileoutputStream (New FileoutputStream (New FileoutputStream (New FileoutputStream ("f: // nepalon // data.txt"))))); Out2.writedouble (3.1415926); Out2.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 (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.close ()); 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.println (" Value " i ": rf.readDouble ()); RF .close ();]}} About code interpretation (in the zone): In the zone, when the file is read, first read the file content to the cache, when calling in.readline (), then cache The data is read in a character manner (hereinafter referred to as "cache byte reading mode").

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.

In the zone, when the data STRING object S2 reads the data, first put the data in the object, and then read from the buffer; when the Testio.out file is operated, the formatted information is output to In the cache, the information in the cache is output to the file.

In the 5th district, when the data.txt file is output, it is first to output the basic type of data output housing cache, and then output the data in the cache to the file; when the file is read, the data in the file first Read to the cache, then read from the cache in the basic type of form. Note in5.Readdouble (). Because write the first WriteDouble (), in order to be displayed correctly. It is also necessary to read in the form of a basic type.

The 6 district is operated by the RandomaccessFile class.

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

New Post(0)