---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
IO流
流即数据的流动,从某一个设备流动到另外一个设备中的过程。Java中对流的输入输出(IO)操作主要有两种,对字节流和字符流的输入输出操作。
IO流体系
|─字符流 JDK1.1
| |─Writer 写入流
| | |─PrintWriter 字符打印流
| | |─StringWriter 字符串写入流
| | |─BufferedWriter 字符写入流缓冲区
| | |─CharArrayWriter 字符数组写入流缓冲区
| | └─OutputStreamWriter 字符转换字节流
| | └-FileWriter 字符文件写入流
| |
| └─Reader 读取流
| |-StringReader 字符串读取流
| |-BufferedReader 字符读取流缓冲区
| | └─LineNumberReader 跟踪行号的缓冲字符输入流
| |-CharArrayReader 字符数组读取流缓冲区
| └─InputStreamReader 字节转换字符流
| └─FileReader 字符文件读取流
|
|─字节流 JDK1.0
| |─InputStream 输入流
| | |─FileInputStream 文件输入流
| | |─PipedInputStream 管道输入流
| | |─ObjectInputStream 对象输入流
| | |─SequenceInputStream 合并输入并流
| | |─ByteArrayInputStream 字节数组输入流缓冲区
| | └─FilterInputStream
| | |─DataInputStream 数据输入流
| | └─BufferedInputStream 字节输入流缓冲区
| |
| └─OutputStream 输出流
| |─FileOutputStream 文件输出流
| |─PipedOutputStream 管道输出流
| |─ObjectOutputStream 对象输出流
| |─ByteArrayOutputStream 字节数组输出流缓冲区
| └─FilterOutputStream
| |─DataOutputStream 数据字节输出流
| └─BufferedOutputStream 字节输出流缓冲区
└─File 类
IO流实例
//一个通过IO复制硬盘文件的例子
class CopyTest{
public static void main(String[] args) throws IOException{
//创建读取流和写入流对象引用
BufferedReader bufr = null;
BufferedWriter bufw = null;
try{
//创建对象实体,并用缓冲流修饰
bufr = new BufferedReader(new FileReader("1.txt"));
bufw = new BufferedWriter(new FileWriter("2.txt"));
//读取流中的行字符串存储在line中,直到流中没有数据,会返回null
String line = null;
while((line=bufr.readLine())!=null){
bufw.write(line); //读一行写入一行到缓冲区中
bufw.newLine(); //加入换行标记,因为readLine在读取的时候是会去掉换行标记的
bufw.flush(); //把缓冲区内的数据刷新到到硬盘文件里
}
}
catch (IOException e){
throw new RuntimeException("读取失败");
}
finally{
try{
if(bufr!=null)
//对bufr进行非null判断是因为如果在最开始建立bufr对象的时候建立不起来,
//下面的bufr.close()会发生空指针异常,因为没有bufr这个对象
bufr.close(); //关闭读取流资源
}
catch (IOException e){
throw new RuntimeException("读取流关闭失败");
}
try{
if(bufw!=null) //道理同上
bufw.close();
}
catch (IOException e){
throw new RuntimeException("写入流关闭失败");
}
}
}
}
//把键盘录入的字符串字母转成大写,并以UTF-8的编码形式写入硬盘文件
class IOTest{
public static void main(String[] args) throws IOException{
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("out2.txt"),"UTF-8"));
//UTF-8将字符编码成字节,一个中文占3个字节
//GBK和GB2312编码表就占两个字节,ISO8859-1西欧编码表,一个字节
String line =null;
while((line=bufr.readLine())!=null){
if("over".equals(line)) //如果输入over,就结束循环
break;
bufw.write(line.toUpperCase());
bufw.newLine(); //换行,如果用PrintWriter打印流的话就不用加newLine,还能自动刷新
bufw.flush();
}
bufw.close();
}
}
---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net