天天看点

JAVA IO流字节流:字符流:处理流:

1:IO流操作主要是为了对数据进行读写操作

2:输入/输出的流向是相对Java程序而言的

IO流的三种分类:

输入流 输出流

字节流 字符流

节点流 处理流

字节流:

父类为InputStream,OuputStream,此为抽象类,不可实例化对象,需要子类继承, 最常用的是            FileInputStream            和               FileOutputStream. 最常用的的方法    int read(byte[] b,int off ,int len)     ,   void write(byte[] b,int off ,int len)

读取数据示例

//声明输入流引用
	FileInputStream fis=null;
	try{
		//生成代表输入流的对象
		fis =new FileInputStream("e:/src/from.text");
		//生成一个字节数组
		byte [] buffer =new byte[100];
		//调用输入流的read方法读取数据
		fis.read(buffer, 0, buffer.length);
		String s=new String(buffer);
		//调用String对象的trim方法,去掉字符串首尾的空格
		s=s.trim();
	}
	catch(Exception e){
		System.out.print(e);
	}
           

读取写入的对比

//声明输入流引用
	FileInputStream fis=null;
	//声明输出流引用
	FileOutputStream fos=null;
	try{
		//生成代表输入流的对象
		fis =new FileInputStream("e:/src/from.text");
		//生成代表输出流的对象
		fos =new FileOutputStream("e:/src/to.text");
		//生成一个字节数组
		byte [] buffer =new byte[100];
		//调用输入流的read方法读取数据
		fis.read(buffer, 0, buffer.length);
		//read的返回值类型是int,正好通过参数给write
		int temp=fis.read(buffer, 0, buffer.length);
		//调用输出流的write方法写入数据
		fos.write(buffer, 0, temp);

	}
	catch(Exception e){
		System.out.print(e);
	}
           

读取大文件的操作

//声明输入流引用
	FileInputStream fis=null;
	//声明输出流引用
	FileOutputStream fos=null;
	try{
		//生成代表输入流的对象
		fis =new FileInputStream("e:/src/from.text");
		//生成代表输出流的对象
		fos =new FileOutputStream("e:/src/to.text");
		//生成一个字节数组
		byte [] buffer =new byte[1024];
		while(true){
		//read的返回值类型是int,正好通过参数给write
		int temp=fis.read(buffer, 0, buffer.length);
		//当数据读完的时候read返回的值为-1
		if(temp==-1){
			break;
		}
		//调用输出流的write方法写入数据
		fos.write(buffer, 0, temp);
		}
	}
	catch(Exception e){
		System.out.print(e);
	}
	finally{      //捕获关闭异常
		try{
		fis.close();
		fos.close();
		}
		catch(Exception e){
			System.out.print(e);
		}
	}
           

字符流:

父类为Reader,Writer,此为抽象类,不可实例化对象,需要子类继承, 最常用的是            FileReader                  和                 FileWriter. 最常用的的方法    int read(char[] b,int off ,int len)     ,   void write(char[] b,int off ,int len)

字符流的读取:

FileReader fr=null;
	FileWriter fw=null;
	try{
		fr =new FileReader("e:/src/from.text");
		fw =new FileWriter("e:/src/to.text");
		//生成一个字符数组
		char [] buffer =new char[100];
		int temp=fr.read(buffer, 0, buffer.length);
		fw.write(buffer, 0, temp);
		}
	}
	catch(Exception e){
		System.out.print(e);
	}
	finally{
		try{
		fr.close();
		fw.close();
		}
		catch(Exception e){
			System.out.print(e);
		}
	}
           

处理流:

处理流用来装饰节点流,给它增加新功能,比如节点流是用来传输水的,处理流可以在传输水的功能上给水加热

FileReader fileReader=null;
	//声明处理流对象
	BufferedReader bufferedReader=null;
	try{
		fileReader =new FileReader("e:/src/from.text");
		//BufferedReader作为处理流用来装饰FileReader节点流,给它添加新功能
		bufferedReader =new BufferedReader(fileReader);
		String line = null;
		while(true){
			//当数据读取结束,readLine返回null
			line=bufferedReader.readLine();
			if(line==null){
				break;
			}
			System.out.println(line);
		}
	}
	catch(Exception e){
		System.out.print(e);
	}
	finally{
		try{
			fileReader.close();
			bufferedReader.close();
		}
		catch(Exception e){
			System.out.print(e);
		}
	}
           

其实IO流的操作很相似,基本掌握一种操作就可以举一反三

感谢mars老师的JavaforAndroid的视频教程