java的IO系统中的流

流:字节流和字符流。字节流只读取一个字节一个字节的读取。字符流是一个字符一个字符的读取。字节流可以处理各种格式数据,字符流只能处理文本格式的数据,一般对于文本格式来说可优先使用字符流。

 

 

常用流:

FileReader和FileWiter(继承于InputSteamReader和OutputSteamWriter)

常用方法:

int read();读取不到则返回-1;

int read(char[]);

int read(char[], i, j)

close();

 

int writer();

int wirter(char[]);

int writer(char[], i, j);

flush();刷新流,将流中的内容刷新到目的地,流还存在

close();关闭流

 

例子:

 

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

public class IOTest {
	
	//在指定位置生成txt文件,并将指定内容写入txt文件
	public void test1(){
		FileWriter fw1 = null;
		try {
			//将流写入指定的路径中
			fw1= new FileWriter("D:/test1.txt");
			fw1.write("wangyj1992");
			fw1.flush();
			fw1.write("happy");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			if(fw1!=null){
				try {
					fw1.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
	}
	
	//从指定的文件下读取,并在管理台打印出来,一个字符一个字符的读
	public void test2(){
		FileReader fr = null;
		try {
			//从指定的路径中读取流
			fr = new FileReader("D:/test1.txt");
			int length = 0;
			while((length=fr.read())!=-1){
				System.out.println((char)length);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if(fr!=null){
				try {
					fr.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	
	//从指定的文件下读取,并在管理台打印出来,按照指定长度读取
	public void test3(){
		FileReader fr = null;
		try {
			fr = new FileReader("D:/test1.txt");
			int length = 0;
			char[] buffer = new char[1024];
			//每次读取1kb大小的字符,直到读到末尾-1为止
			while((length=fr.read(buffer))!=-1){
				System.out.println(new String(buffer, 0, length));	
			}
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if(fr!=null){
				try {
					fr.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
	}
	
	public static void main(String[] args) {
		IOTest ioTest = new IOTest();
		//在指定的D:/test1.txt路径下生成txt文件,且txt文件内容为wangyj1992happy
		//ioTest.test1();
		//将D:/test1.txt文件下的内容,一个字符一个字符的打印到控制台上
		//打印内容:
		//w
		//a
		//n
		//g
		//y
		//j
		//1
		//9
		//9
		//2
		//h
		//a
		//p
		//p
		//y
		//ioTest.test2();
		//将D:/test1.txt文件下的内容,一次性读取1kb的内容,然后一次性打印在控制台上
		//打印内容:wangyj1992happy
		ioTest.test3();
	}
	
}

 

 

 

 

 

常用流:

BufferReader和BufferWriter字符流的缓冲区。其是为了加强流处理的效率,本质是讲流用数组进行封装,一次性处理。因为它是对流的效率进行加强处理,所以是在流的基础上完成的,所以在使用BufferReader和BufferWriter的时候是基于流的基础上使用。

BufferReader特有发方法readLine();读不到的为null

BufferWriter特有的方法为newLine();

根据前面所说的建立缓冲区时要先有流对象,并将其作为参数传递给缓冲区的构造函数。

 

例子:

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class IOTest {
	
	/**
	 * 用非缓存流的方式,将指定的某个文件的内容写到另一个文件中去
	 * read(char[]),-1,int
	 */
	public void test4(){
		FileReader fr = null;
		FileWriter fw = null;
		try {
			fr = new FileReader("D:/test1.txt");
			fw = new FileWriter("D:/writer.txt");
			int length = 0;
			char[] buf = new char[1024];
			while((length=fr.read(buf))!=-1){
				System.out.println(new String(buf, 0, length));
				fw.write(new String(buf, 0, length));
				fw.flush();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				if(fw!=null){
					fw.close();
				}
				if(fr!=null){
					fr.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 用缓存流的方式,将指定的某个文件的内容写到另一个文件中去
	 * 因为缓冲流的存在是加强流的处理效率,所以缓冲流是基于流存在的
	 * readLine(),null,String
	 */
	public void test5(){
		BufferedReader br = null;
		BufferedWriter bw = null;
		try {
			br = new BufferedReader(new FileReader("D:/test1.txt"));
			bw = new BufferedWriter(new FileWriter("D:/writer.txt"));
			String buffer = null;
			while((buffer=br.readLine())!=null){
				bw.write(buffer);
				bw.flush();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				if(bw!=null){
					bw.close();
				}
				if(br!=null){
					br.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	
	public static void main(String[] args) {
		IOTest ioTest = new IOTest();
		//将test1.txt的内容赋值到witer.txt文件中
		ioTest.test4();
		//将test1.txt的内容赋值到witer.txt文件中
		//ioTest.test5();
	}
	
}

 

 

 

完整代码片:

 

package test1;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class IOTest {
	
	//在指定位置生成txt文件,并将指定内容写入txt文件
	public void test1(){
		FileWriter fw1 = null;
		try {
			//将流写入指定的路径中
			fw1= new FileWriter("D:/test1.txt");
			fw1.write("wangyj1992");
			fw1.flush();
			fw1.write("happy");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			if(fw1!=null){
				try {
					fw1.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
	}
	
	//从指定的文件下读取,并在管理台打印出来,一个字符一个字符的读
	public void test2(){
		FileReader fr = null;
		try {
			//从指定的路径中读取流
			fr = new FileReader("D:/test1.txt");
			int length = 0;
			while((length=fr.read())!=-1){
				System.out.println((char)length);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if(fr!=null){
				try {
					fr.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	
	//从指定的文件下读取,并在管理台打印出来,按照指定长度读取
	public void test3(){
		FileReader fr = null;
		try {
			fr = new FileReader("D:/test1.txt");
			int length = 0;
			char[] buffer = new char[1024];
			//每次读取1kb大小的字符,直到读到末尾-1为止
			while((length=fr.read(buffer))!=-1){
				System.out.println(new String(buffer, 0, length));	
			}
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if(fr!=null){
				try {
					fr.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
	}
	
	/**
	 * 用非缓存流的方式,将指定的某个文件的内容写到另一个文件中去
	 * read(char[]),-1,int
	 */
	public void test4(){
		FileReader fr = null;
		FileWriter fw = null;
		try {
			fr = new FileReader("D:/test1.txt");
			fw = new FileWriter("D:/writer.txt");
			int length = 0;
			char[] buf = new char[1024];
			while((length=fr.read(buf))!=-1){
				System.out.println(new String(buf, 0, length));
				fw.write(new String(buf, 0, length));
				fw.flush();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				if(fw!=null){
					fw.close();
				}
				if(fr!=null){
					fr.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 用缓存流的方式,将指定的某个文件的内容写到另一个文件中去
	 * 因为缓冲流的存在是加强流的处理效率,所以缓冲流是基于流存在的
	 * readLine(),null,String
	 */
	public void test5(){
		BufferedReader br = null;
		BufferedWriter bw = null;
		try {
			br = new BufferedReader(new FileReader("D:/test1.txt"));
			bw = new BufferedWriter(new FileWriter("D:/writer.txt"));
			String buffer = null;
			while((buffer=br.readLine())!=null){
				bw.write(buffer);
				bw.flush();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				if(bw!=null){
					bw.close();
				}
				if(br!=null){
					br.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	
	public static void main(String[] args) {
		IOTest ioTest = new IOTest();
		//在指定的D:/test1.txt路径下生成txt文件,且txt文件内容为wangyj1992happy
		//ioTest.test1();
		//将D:/test1.txt文件下的内容,一个字符一个字符的打印到控制台上
		//打印内容:
		//w
		//a
		//n
		//g
		//y
		//j
		//1
		//9
		//9
		//2
		//h
		//a
		//p
		//p
		//y
		//ioTest.test2();
		//将D:/test1.txt文件下的内容,一次性读取1kb的内容,然后一次性打印在控制台上
		//打印内容:wangyj1992happy
		//ioTest.test3();
		//将test1.txt的内容赋值到witer.txt文件中
		ioTest.test4();
		//将test1.txt的内容赋值到witer.txt文件中
		//ioTest.test5();
	}
	
}

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值