Loading

IO流

节点流和处理流:

节点流类型

 

案例:

package cn.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;

import org.junit.Test;

public class Demo4  {
	
	@Test
	//测试字节输入流
	public void FileInputStreamTest() throws Exception{
		//创建字节输入流
		FileInputStream fs = new FileInputStream("./src/cn/test/Demo4.java");
		//创建一个1024的数节字组,每次从流中最多截取1024字节
		byte[] bytes = new byte[1024];
		//用于保存实际读取的字节数
		int hasRead = 0;
		//使用循环重复的读取流中的字节,直到hasRead=-1
		while ((hasRead = fs.read(bytes))  > 0){
			System.out.println(new String(bytes,0,hasRead));
		}
		fs.close();
	}
	
	@Test
	//测试字符输入流
	public void FileReaderTest() throws IOException{
		//创建字符流
		try {
			FileReader fr = new FileReader("./src/cn/test/Demo4.java");
			//设置每次从文件中读取的文件字符数
			char[] cbuf = new char[256];
			//用于保存实际读取得字符数
			int hasRead = 0;
			while ((hasRead=fr.read(cbuf))>0){
				//将字符串数组转换成字符串输入
				System.out.println(new String(cbuf,0,hasRead));
			}
			fr.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
	}
	
	@Test
	//测试字节输出流,读取A文件的流到B文件中
	public void fileOutputStreamTest() throws IOException{
		
		try {
			//创建字节输入流
			FileInputStream fis = new FileInputStream("./src/cn/test/Demo4.java");
			//创建字节输出流,将Demo4.java的内容写到newfile.txt中
			FileOutputStream fos = new FileOutputStream("D:/temp/newfile.txt");
			//创建取字节流的容器字节数组
			byte[] bytes = new byte[1024];
			//用于保存实际读取的字节数
			int hasRead = 0;
			//循环从输入流中读取数据
			while ((hasRead = fis.read(bytes))>0){
				//没读取一次就写入输出流中
				fos.write(bytes, 0, hasRead);
			}
			fis.close();
			fos.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	@Test
	//测试字符输出流
	public void fileWriterTest(){
		try {
			FileWriter fw = new FileWriter("D://temp//test.txt");
			//在test.txt中写入内容
			fw.write("hello world!!!\r\n");
			fw.append("China");
			fw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	@Test
	//测试PrintStream字节输出处理流
	public void printStreamTest(){
		try {
			//创建一个输出流
			FileOutputStream fos = new FileOutputStream("D:/temp/test.txt");
			PrintStream ps = new PrintStream(fos);
			//使用PrintStream执行输出,将"普通字符串"写入到test.txt中
		    ps.println("普通字符串");
			ps.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	@Test
	//测试转换流和缓冲流
	public void inputStreamReaderTest() throws IOException{
		try {
			//创建字节输入流
			FileInputStream fis = new FileInputStream("D:/temp/test.txt");
			//将字节输入流转换成字符输入流
			InputStreamReader reader = new InputStreamReader(fis);
			//将普通的Reader包装成BufferedReader
			BufferedReader br = new BufferedReader(reader);
			String line = null;
			//采取循环逐行读取
			while ((line = br.readLine()) != null){
				if (line.equals("exit")){
					System.exit(1);
				}
				System.out.println(line);
			}
			br.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}

  

posted @ 2016-05-26 23:44  头痛不头痛  阅读(175)  评论(0编辑  收藏  举报