码迷,mamicode.com
首页 > 编程语言 > 详细

Java的IO流

时间:2014-12-07 17:50:11      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:io流   输入输出   输入流   输出流   java输入输出   

1.概述
Java的IO通过java.io包下面的接口和类来实现的,在java.io包下包括输入,输出两种IO流,每种输入和输出流又可以分为字节流和字符流两大类。其中字节流以字节为单位来处理输入输出操作,其中字符流以字符为单位来处理输入输出操作。

Java的IO流分为底层节点流和上层处理流,其中节点流用于和底层的物理节存储点直接关联——不同的物理节点获取节点流的方式可能存在差异,但程序可以把不同的物理节点包装成统一的处理流,从而允许程序使用统一的输入,输出代码来读取不同的物理存储节点的资源。

2.字节流
2.1InputStream抽象类
InputStream是所有字节流中输入流的抽象基类。
2.1.1FileInputStream类

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInputStreamTest {
	public static void main(String[] args) {
		try {
			//创建一个字节输入流
			FileInputStream fis=new FileInputStream("src/com/t/lavor_zl.txt");
			byte[] buf=new byte[1024];//创建长度为1024的字节数组
			int hasRead=0;//用来保存实际读取的字节数
			/*read()方法还有两种重载:read()读取一个字节,返回读取的字节;
                        *read(char[] buf,int off,int len)从off位置开始读取len个字节
                        *并将它存储在buf中,返回实际读取字节的个数
                        */
			while((hasRead=fis.read(buf))>0){
				System.out.println(new String(buf,0,hasRead));
			}
			fis.close();//关闭输入流
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

}

PS:汉字占2个字符,若只读取了汉字的一个字符,会出现乱码。
2.2OutputStream抽象类
OutputStream是所有字节流中输出流的抽象基类。
2.2.1FileOutputStream类

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamTest {
	public static void main(String[] args) {
		try {
			FileOutputStream fos=new FileOutputStream("src/com/t/lavor.txt");
			byte[] buf=new byte[1024];
			String str="lavor_zl";
			buf=str.getBytes();//将字符串转换成字符数组
                        /*
                                          *write()方法还有两种重载:writer(int b)将指定的字节输出到输入流;
                        * writer(byte[] buf)将字符数组输出到输出流
                        */
			fos.write(buf, 0, str.length());
			fos.close();//关闭输出流
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

3.字符流
3.1Reader抽象类
Reader是所有字符流中的输入流的抽象基类。
3.1.1FileReader类

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderTest {
	public static void main(String[] args) {
		try {
			//创建一个输入流
			FileReader fr=new FileReader("src/com/t/lavor_zl.txt");
			char[] buf=new char[1024];
			int hasRead=0;
			
			/*read()方法还有两种重载:read()读取一个字符,返回读取的字符;
			*read(char[] buf,int off,int len)从off位置开始读取len个字符
			*并将它存储在buf中,返回实际读取字符的个数
			*/
			while((hasRead=fr.read(buf))>0){
				System.out.println(new String(buf,0,hasRead));
			}
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

3.2Writer抽象类
Writer是所有字符流中的输出流的抽象基类。
3.2.1FileWriter类

import java.io.FileWriter;
import java.io.IOException;

public class FileWriterTest {
	public static void main(String[] args) {
		try {
			FileWriter fw=new FileWriter("src/com/t/lavot.txt");
			char[] buf=new char[]{'l','a','v','o','r'};
			fw.write(127);//输入指定字符到输出流,参数是int型
			fw.write(buf);//输入指定字符数组到输出流
			fw.write(buf, 0, 3);//从指定字符数组中输出从0位置开始的3个字符到输出流
			fw.write("lavor_zl");//输入指定字符串到输出流
			fw.write("lavor_zl", 0, 3);//从指定字符串中输出从0位置开始的3个字符到输出流
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

4.IO流体系

分类 字节输入流 字节输出流 字符输入流 字符输出流
抽象基类 InputStream
OutputStream Reader Writer
访问文件 FileInputStream FileOutputStream FileReader FileWriter
访问数组 ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter
访问管道 PipedInputStream PipedOutputStream PipedReader PipedWriter
访问字符串     StringReader StringWriter
缓冲流 BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter
转换流     InputStreamReader OutputStreamWriter
对象流 ObjectInputStream ObjectOutputStream    
抽象基类 FilterInputStream FilterOutputStream FilterReader FilterWriter
打印流   PrintStream   PrintWriter
推回输入流 PushbackInputStream   PushbackReader  
特殊流 DataInputStream DataOutputStream    
红色代表抽象基类,无法直接创建实例;蓝色代表字节流,必须直接与指定的物理节点关联


Java的IO流

标签:io流   输入输出   输入流   输出流   java输入输出   

原文地址:http://blog.csdn.net/lavor_zl/article/details/41788499

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!