Java IO Stream 总结
2010-08-04 10:38
246 查看
Java IO Stream 总结
Stream是在编程语言中对输入输出的总称
(一种比喻的称谓。Stream
为流水,输入输出实际上就是指数据的流动,数据由一个地方运动的另一个地方,就像流水一样,程序员将输入输出比作流水,再恰当不过了。)
流按照其所载内容分类,大致可分为字节流和字符流两大类
字节流
(Byte Stream
)
在计算机中,byte
是相当于机器语言中的单词,他在Java
中统一由InputStream
和OutputStream
作处理。
字符流(Character Stream
)
而在编码体系中,一般采用Char
(2 bytes
),
他在Java
中统一由Reader
和Writer
作处理。
InputStream, OutputStream, Reader
和Writer,
作为在java.io.*
包的顶级父类,定义了IO Process
中最抽象的处理和规范。对于实际的应用,他们并不适用。于是根据各种实际的需要,由他们派生出来形式各样各具特色的子类。
下表概述了Java IO
常用Classes
的关系:
常用Java IO Classes 关系图 | ||||
Byte | InputStream/ OutputStream | Node Byte Stream | FileInputstream/ FileOutputStream | |
PipeInputStream/ PipeOutputStream | | |||
… | | |||
Processing Byte Stream | FilterInputStream/ FilterOutputStream | BufferInputStream/ BufferOutputStream | ||
DataInputStream/ DataOutputStream | ||||
PrintStream | | |||
… | | |||
Byte 与 Char 通过 InputstreamReader 和 OutputStreamWriter 来转换 | ||||
Char | Reader/Writer | Node Char Stream | FileReader/FileWriter | |
PipeReader/PipeWriter | | |||
… | | |||
Processing Char Stream | | BufferReader/ BufferWriter | ||
PrintWriter | | |||
… | |
(一)Stream
的分类:
1Node Stream :
基本流,可以从名称中看出他是从哪个地方输入输出的。
1.1
用于文件输入输出流: FileInputStream, FileOutputStream
1.2
用于内存数组的输入输出流:ByteArrayInputStream, ByteArrayOutputStream
1.3
用于字符串的输入输出流:StringArrayInputStream, StringArrayOutputStream
1.4
用于管道的输入输出流:PipedInputStream, PipeOutStream (
用于线程间的交互)
….
2
Processing Stream:
处理流,是对Node Stream
的加强和补充,可以看作是高级流。
要构造一个高级流通常要以一个基础流为基础(如通过构造函数的参数传入)
2.1
用于提高输入输出效率的缓冲流:BufferedInputStream, BufferedOutputStream
2.2
用于数据转化的数据流: DataInputStream (
用于读取Java
的Primitive Data Type) , DataOutputStream
2.3
8
位转化为16
位的流: InputStreamReader, OutputWriter (
用于沟通byte
和Char )
2.4
打印流: PintStream
….
(二)几个重要的IO Classes
InputStream
abstract int ( 可对应Char) | read () Reads the next byte of data from the input stream |
int | read (byte[] b) Reads some number of bytes from the input stream and stores them into the buffer array b. |
void | close () Closes this input stream and releases any system resources associated with the stream. (Stream 用完之后要注意关闭!) |
OutputStream
abstract void | write (int b) Writes the specified byte to this output stream. |
void | write (byte[] b) Writes b.length bytes from the specified byte array to this output stream. |
void | close () Closes this output stream and releases any system resources associated with this stream. |
void | flush () Flushes this output stream and forces any buffered output bytes to be written out. (不必等buffer 满了再写出,强行把所有的东西都写出来) |
DataInputStream
能够读出在输入流中读出Java
的基本数据类型(primitive data type
),常在对输入流格式十分清楚的情况下使用.
boolean | readBoolean () |
byte | readByte () |
char | readChar () |
double | readDouble () |
float | readFloat () |
int | readInt () |
DataOutputStream
能够直接写出Java
的基本数据类型
void | writeBoolean (boolean v) Writes a boolean to the underlying output stream as a 1-byte value. |
void | writeByte (int v) Writes out a byte to the underlying output stream as a 1-byte value. |
void | writeDouble (double v) Converts the double argument to a long using the doubleToLongBits method in class Double, and then writes that long value to the underlying output stream as an 8-byte quantity, high byte first. |
void | writeFloat (float v) Converts the float argument to an int using the floatToIntBits method in class Float, and then writes that int value to the underlying output stream as a 4-byte quantity, high byte first. |
void | writeInt (int v) Writes an int to the underlying output stream as four bytes, high byte first. |
FileReader
Constructor Summary | |
FileReader ( File file) Creates a new FileReader, given the File to read from. | |
FileReader ( String fileName) Creates a new FileReader, given the name of the file to read from. |
FileWriter
Constructor Summary | |
FileWriter ( File file) Constructs a FileWriter object given a File object. | |
FileWriter ( File file, boolean append) Constructs a FileWriter object given a File object. | |
FileWriter ( String fileName) Constructs a FileWriter object given a file name. | |
FileWriter ( String fileName, boolean append) Constructs a FileWriter object given a file name with a boolean indicating whether or not to append the data written. |
PrintWriter
最好的Writer (
提供了我们熟悉的println()
方法)
Constructor Summary | |
PrintWriter ( File file) Creates a new PrintWriter, without automatic line flushing, with the specified file. | |
PrintWriter ( OutputStream out) Creates a new PrintWriter, without automatic line flushing, from an existing OutputStream. | |
PrintWriter ( Writer out) Creates a new PrintWriter, without automatic line flushing. | |
void | println (boolean x) Prints a boolean value and then terminates the line. |
void | println (char x) Prints a character and then terminates the line. |
void | println (double x) Prints a double-divcision floating-point number and then terminates the line. |
void | println (float x) Prints a floating-point number and then terminates the line. |
void | println (long x) Prints a long integer and then terminates the line. |
void | println ( Object x) Prints an Object and then terminates the line. |
void | println ( String x) Prints a String and then terminates the line. |
BufferedReader
int | read () Reads a single character. |
String | readLine () Reads a line of text. |
void | close () Closes the stream and releases any system resources associated with it. |
BufferedWriter
void | write (char[] cbuf, int off, int len) Writes a portion of an array of characters. |
void | write ( String s, int off, int len) Writes a portion of a String. |
void | close () Closes the stream, flushing it first. |
void | flush () Flushes the stream. |
InputStreamReader
Constructor Summary | |
InputStreamReader ( InputStream in) Creates an InputStreamReader that uses the default charset. |
OutputStreamWriter
Constructor Summary | |
OutputStreamWriter ( OutputStream out) Creates an OutputStreamWriter that uses the default character encoding. |
(三)IO
编程的一般流程:
1.创建基本流
2.
升级基本流到高级流
3.
使用在高级流中的方法作读写操作
4.
关闭流并释放资源
-------------------------------------------------------------------------------
1. Creat node stream;
2. Upgrade node stream to processing stream if necessary
3. Use the methods in the stream object to read or write
4. Close the stream and release the resource
------------------------------------------------------------------------------
1. Create InputStream/Reader
2. Upgrade to Buffered
3. Use readLine()
While((str=in.readln())!=null)
4. close()
------------------------------------------------------------------------------
1. Create OutputStream/Writer
2. Upgrade to PrintWriter
3. Use println()
4. close()
(四)经典的IO代码(需要背诵在心)
import
java.io.
*
;
/**/
/*
1. Creat node stream;
2. Upgrade node stream to processing stream if necessary
3. Use the methods in the stream object to read or write
4. Close the stream and release the resource
--------------------------------------------------------
1. Create InputStream/Reader
2. Upgrade to Buffered
3. Use readLine()
While((str=in.readln())!=null)
4. close()
--------------------------------------------------------
1. Create OutputStream/Writer
2. Upgrade to PrintWriter
3. Use println()
4. close()
*/
public
class
IOProcessSample
...
{
public
static
void
main(String[] args)
...
{
//
Create a file based on the first command-line argument to the program
File file
=
new
File(args[
0
]);
//
Create buffered reader from the standard input
BufferedReader in
=
new
BufferedReader(
new
InputStreamReader(System.in));
System.out.println(
"
Press ctr-d or ctr-z to end
"
);
String str;
try
...
{
//
Create a print write to write on a file
//
PrintWriter is required to handled the IO exception
PrintWriter out
=
new
PrintWriter(file);
//
Read from the standard input and write to the file
while
((str
=
in.readLine())
!=
null
)
...
{
out.println(str);
}
//
close the stream and release the resource
in.close();
out.close();
}
catch
(FileNotFoundException e)
...
{
System.err.println(
"
File not found in part 1 :
"
+
file);
}
catch
(IOException e)
...
{
e.printStackTrace();
}
finally
...
{
System.out.println(
"
-----------Part1 is ended-----------------------
"
);
}
//////////////////////////////////////////////////////////////////////////////
try
...
{
//
Create a buffer reader from a file
in
=
new
BufferedReader(
new
FileReader(file));
//
Read the file and print the content on the screen.
while
((str
=
in.readLine())
!=
null
)
...
{
System.out.println(str);
}
//
close the stream and release the resource
in.close();
}
catch
(FileNotFoundException e)
...
{
System.err.println(
"
File not found in part 2:
"
+
file);
}
catch
(IOException e)
...
{
e.printStackTrace();
}
finally
...
{
System.out.println(
"
----------------------The End -------------------------
"
);
}
}
}
相关文章推荐
- Java IO Stream 总结
- Java IO Stream 总结
- Java IO Stream 总结
- Java IO Stream 总结
- Java IO Stream 总结
- Java IO Stream 总结
- JAVA io 流总结
- java总结
- 微信扫码支付第一种场景(先生成产品二维码,用户扫码生成交易)JAVA开发总结
- android,java知识点总结(一)
- Java基础总结 - 封装 继承 多态
- Java知识点总结与概括
- 用java调用oracle存储过程总结
- JPA(Java Persistence API)学习总结
- java思想总总结8--字符串,正则
- java基础知识总结2
- 对Java Serializable(序列化)的理解和总结
- java构造方法总结
- JAVA基础之static关键字方法总结
- 慕课网-java高并发秒杀api之web层-总结