Java-based IO stream and javaio stream
IO streams are used to process data transmission between devices. java operates on data through streams, and the objects of these operation streams are encapsulated in IO packages. Streams can be divided into two types: dense streams and word throttling. The encoding method can be set for the ghost stream, which makes it easier to process text.
IO common base classes
Byte stream abstraction base class InputStream, OutputStream. The extract stream abstraction base class Reader and Writer.
Middleware stream System Abstract base Writer
Common Methods: write (); flush (); close (); append ()
Subclass FileWriter
Used to write files. When an object of this type is initialized, the file to be operated must be specified. The write method writes data to the stream. The flush method refreshes the stream, closes and closes the stream.
Abstract class base class Reader
Common Methods: read (), skip (), reset (), ready ()
Subclass FileReader
Used to read files. When initializing an object, you must specify the file to be read. The read () method reads data into the stream.
IO Exception Handling IOException
The stream object fw should be declared outside the try block and initialized internally so that it can be accessed in finally. The close method can be called only when fw is not null, so judgment is required.
Shard Stream Buffer
The buffer of the upstream stream improves the IO efficiency and needs to be used in conjunction with the stream. The streaming function is enhanced based on the stream. The corresponding classes are BufferedReader and BufferedWriter.
BufferedWriter
Write text to the character output stream to buffer each character, so as to provide efficient writing of single characters, character arrays, and strings. Therefore, before creating a buffer, you only need to add the stream object to the constructor and then call the Writing Method of the buffer.
BufferedReader
Read text from the character input stream, buffer each character, so as to achieve efficient reading of characters, arrays, and rows.
LineNumberReader
The buffer character output stream of the trace row number. The setLineNumber and getlLineNumber methods can be used to set and obtain the current row number.
Byte stream System Abstract base class OutputStream
Common Methods: write (); flush (); close ();
Subclass FileOutputStream
Used to write files. When an object of this type is initialized, the file to be operated must be specified. Write method writes data to the stream, flush method refreshes the stream, close to refresh and close the stream
Abstract class base class InputStream
Common Methods: read (), skip (), reset (), ready ()
Subclass FileInputStream
Used to read files. When initializing an object, you must specify the file to be read. The read () method reads data into the stream. available () returns the number of bytes that can be read.
Byte stream buffer
The corresponding classes are BufferedOutputStream and BufferedInputStream.
BufferedOutputStream
This class implements buffered output streams. By setting this output stream, the application can write each byte to the underlying output stream without calling the underlying system for each byte write.
BufferedInputStream
The same as the upstream stream buffer.
Read the conversion stream
The InputStreamReader class exchanges byte streams into bytes streams. It specifies a character set to read bytes and decode them into characters. To achieve high efficiency, you can consider packing InputStreamReader in BufferedReader.
Write conversion stream
The OutputStreamWriter class converts a bytes stream to a byte stream. You can specify a character set to encode it into bytes. To achieve high efficiency, you can consider packaging OutputStreamWriter in BufferedWriter.
When the input stream is operated, the source ---- bridge (Rune conversion) ---- buffer should be clarified. The output stream operation should specify the purpose ------ bridge (Rune conversion) ------ buffer.
Flie class
It is used to encapsulate files or folders into objects to facilitate operations on files and folders. It can also be used as a parameter to pass to the stream constructor.
Common Methods:
- Create
- CreateNewFile (); create a new file. If yes, false is returned.
- CreateTempFile (prefix, suffix) static method, create a temporary file based on the specified prefix suffix
- Mkdir (); mkdirs (); create a directory
- Delete
- Delete (); delete an object
- DeleteOnExit (); request to delete the file or directory at JVM termination.
- Judgment
CanExcute (); canRead (); canWrite (); exist (); isDirectory (); isFile ()
- Obtain information
- Getname (); getPath (); getParent (); getAbsolutePath (); length ()
- List (dir); get the file name array in the directory
- ListFiles (dir); get the object Array
Properties class
This class is a collection container combined with I/O in a collection. It is a subclass of hashtable, that is, it has the characteristics of a map set and all key-value pairs are strings. This type of object can be used in configuration files in the form of key-value pairs.
- SetProperties (str, str); getProperties (str) read Set Properties
- Load () after loading the byte stream or the upstreaming stream version 1.6
- Set <string> stringPropertyNames () returns the key Set in the property list.
Print stream byte output stream PrintStream class
As a subclass of outputStream, this function is added to other output streams so that they can print various numerical representations. Print all types of data as they are. You can directly operate the file. Its constructor accepts the file object, file path, and byte output stream.
Character output stream PrintWriter class
Its constructor can accept the file object, file path, byte output stream outputstream, and character output stream Writer.
SequenceInputStream
Combines multiple input streams into one input stream.
Object serialization
To access data objects in heap memory, you need to use the ObjectOutputStream and ObjectInputStream classes, also known as object persistence or object serialization.
Class to enable its serialization function by implementing the interface serializable. Static member variables in the class cannot be serialized, because static member variables are not stored in heap memory, but stored in the memory method area. If a non-static member is modified with the transient keyword, it can also be not serialized.
Pipeline Flow
Pipeline stream input and output can be directly connected. By using them in combination with threads, PipledOutputStream and PipledInputStream must be used.
The input stream of the MPs queue should be connected to the MPs queue output stream. The MPs queue input stream provides all the input bytes to be written to the MPs queue output stream. Generally, data is read by a thread from the PipledInputStream object and written to the corresponding PipledOutputStream object by other threads.
Random File Access
The RandomAccessFile class can perform random read/write operations on the file. It encapsulates byte arrays and operates on arrays through pointers. Get the pointer position through getFilePointer () and change the pointer position through seek.
For io streams in java
4. Basic byte streams
4.1. FileInputStream and FileOutputStream
These two node streams are used to manipulate disk files. Constructors of these classes allow you to specify the files they are connected.
To construct a FileInputStream, the associated file must exist and be readable.
If you want to construct a FileOutputStream and the output file already exists, it will be overwritten.
FileInputStream infile = new FileInputStream ("myfile. dat ");
FileOutputStream outfile = new FileOutputStream ("results. dat ");
4.1 BufferInputStream and BufferOutputStream
These are filter streams, which can improve the efficiency of I/O operations.
4.3. PipedInputStream and PipedOutputStream
The pipeline stream is used for communication between threads. The PipedInputStream object of one thread reads the input from the PipedOutputStream object of another thread.
To make the pipeline stream useful, you must have an input party and an output party.
4.4. DataInputStream and DataOutputStream
These filters read and write Basic Java classes through streams
5. Basic streams
The figure illustrates the architecture of Reader and Writer internal streams.
5.1. InputStreamReader and OutputStreamWriter
This interface is used to convert byte streams to byte streams.
When you construct an InputStreamReader or OutputStreamWriter, the conversion rules define the conversion between the 16-bit Unicode and the specific representation of other platforms.
InputStreamReader reads bytes from a data source and automatically converts them to Unicode characters.
If you specifically declare that InputStreamReade will replace byte streams with other types of bytes streams.
OutputStreamWriter writes the Unicode encoding of characters to the output stream. If you are not using Unicode characters, OutputStreamWriter converts your character encoding to Unicode encoding.
5.2. Buffer readers and authors
Because the conversion between different formats is similar to other I/O operations, the maximum efficiency of processing large data blocks is reached.
It is a good idea to link a BufferedReader and BufferedWriter at the end of InputStreamReader and OutputStreamWriter.
Remember to use the flush () method for BufferedWriter.
5.3 use other characters for conversion
If you need to read the input from a non-local character code (for example, from a network connection to a different type of machine,
You can use explicit character encoding to construct ir = new InputStreamReader (System. in, "8859_1 bytes) Like the following program 〃);
Note: If you read characters through a network connection, you should use this form.
Otherwise, your program will always try to convert the characters read as a local representation, which is not always correct. ISO 8859-1 is the Latin-1 encoding mode mapped to ASCII.
A question about the basic JAVA io stream
InputStreamReader converts a byte stream into a bytes stream. Therefore, BufferedReader can be used to buffer and receive messages.
The last generation of Reader names are all converted to the secondary stream.
ByteArrayInputStream is the real byte processing stream.