最近工作中涉及到一些文件操作的东西,闲下来刚好做个整理。
在控制台使用键盘作为标准输入并使用终端窗口(在windows下,经常是命令提示符或者是PowerShell;在linuxx/OS X下则是terminal)作为标准输出。
java通过java.lang.System类中的三个共有变量支持控制台IO:
System.out
打印一般信息对象,是一个PrintStream对象,该对象默认指的是启动java应用程序的终端窗口。
System.in
输入信息对象,是一个InputStream对象,该对象默认指用户的键盘输入。
System.err
打印错误对象信息,是一个PrintStream对象,该对象默认指的是启动java应用程序的终端窗口。
使用System的静态方法可以重定向这些信息到一个文件流:
System.setOut
System.setIn
System.setErr
Java所有的I/O机制都是基于数据流的,这些数据流表示了字符或者字节数据的流动序列。 流是一个很形象的概念,当程序需要读取数据时,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接,则这就是“输入流”,(注意:开启数据源,事实上,下文要写入时,也要先开启目的地)。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流,这就是“输出流”,这时你就可以想像数据好像在这其中“流”动一样。
Java中的流分为两种:
一种是字节流,另一种是字符流 分别由四个抽象类来表示(每种流包括输入和输出各两种,所以一共四个): InputStream OutputStream Reader Writer
Java中的字节流是用于处理字节的输入和输出的,包括读写二进制数据等方面的内容。
InputStream OutputStream
而Java中的字符流则用于处理字符的输入和输出,采用的是Unicode编码(这点比C/C++改进了,C/C++中采用的是ASCII码,因此,在其中时,字符是1个字节,而在这里,Unicode编码,一个字符是两个字节,这样,所有的文字都可以表示了),可以实现国际化。
Reader Writer
(1)InputStream
1)abstract int read()
2)int read(byte[] b)
3)int read(byte[] b,int off,int len)
4)long skip(long n)
5)int available()
6)void close()
7)void mark(int readlimit)
8)void reset()
9)boolean markSupported()
(2)OutputStream
1)abstract void write(int b)
2)void write(byte[] b)
3)void write(byte[] b,int off,int len)
4)void close()
5)void flush()
(3)Reader Writer
public abstract int read() throws IOException
public abstract void write() throws IOException
例子待续!
原文:http://www.cnblogs.com/myadmin/p/4976631.html