java_10 IO流基础---②

一、缓冲流复制文本文件的两种方式

CopyFileDdmo.java

需求:	

	把项目路径下的FileWriterDemo.java中的内容复制到项目路径下的Copy.java中
数据流:
	FileWriterDemo.java-----读数据----FileReader----高效读取数据----BufferedReader
目的地:
	Copy.java----写数据---FileWriter----高效的写数据-----BufferedWriter
public class CopyFileDemo{
	public static void main(String[] args) throws IOException{
	//创建输入缓冲流对象
	BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java"));
	//创建输出缓冲流对象
	BufferedWriter bw = new BufferedWriter(new FileWriter("Copy.java"));
	
	//读写数据
	//一次读写一个字符
	int ch;
	while(ch = br.read()!==-1){
			bw.write(ch);
		}

	//一次一个字符数组
	char[] chs = new char [1024];
	int len;
	while((len = br.read())!=-1){
		bw.write(chs,0,len);
	}


	//释放资源
	bw.close();
	br.close();
	}
}

二、缓冲流的特殊功能

缓冲流的特殊功能

BufferedWriter
	void newLine():写一个换行符,这个执行符由系统决定
BufferedReader
	void readLine():一次读取一行数据,但是不读取换行符

BufferedStreamDemo.java


public class BufferedStreamDemo{
	public static void main(String[] args) throws IOException{
		/*void newLine()
		BufferedWriter bw = new BufferedWriter(new FileWriter("bw2.txt"));
		for(int x ; x<10 ; x++){
			bw.writer("writer"+x);
			//bw.write("\r\n);
			bw.newLine();
			bw.flush();
		}
		bw.close();*/
		
		//void readLine()
		BufferedReader br = new BufferedReader(new FileReader("br.txt"));
		String line;
		while((line = br.read())!=null){
			System.out.println(line);
		}
		br.close();
	}
}	

三、缓冲流特殊功能复制文本文件

需求:

把项目路径下的FileWriterDemo.java中的内容复制到项目路径下的Copy.java中

数据流:

FileWriterDemo.java-----读数据----FileReader----高效读取数据----BufferedReader

目的地:

Copy.java----写数据---FileWriter----高效的写数据-----BufferedWriter

CopyFileDemo.java

public class CopyFileDemo{
	public static void main(String[] args) throws IOException{
	//创建输入缓冲流对象
	BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java"));
	//创建输出缓冲流对象
	BufferedWriter bw = new BufferedWriter(new FileWriter("Copy.java"));
	
	//读取数据
	String line;
	while((line = br.read())!=null){
			bw.write(line);
			bw.newLine();
			bw.flush();
	}
	bw.close();
	br.close();
	}
}

四、复制文本文件的五种方式

复制文本文件(五种方式)
数据源

FileWriterDemo.java

目的地

Copy.java

CopyFileTest.java

public class CopyFileDemo{
	public static void main(String[] args) throws IOException{
		String secFileName = "FileWriterDemo.java";
		String destFileName = "Copy.java";
		method1(secFileName ,destFileName );
		method2(secFileName ,destFileName );
		method3(secFileName ,destFileName );
		method4(secFileName ,destFileName );
		method5(secFileName ,destFileName );
		
		//基本流一次读写一个字符
		public static void method1(secFileName ,destFileName ) throws IOException{
			//创建输入流对象
			FileReader fr = new FileReader(secFileName);
			//创建输出流对象
			FileWriter fw = new FileWriter(destFileName);
		
			int ch ;
			while((ch=fr.read())!=-1){
				fw.writer(ch);
			}
			//释放资源
			fw.close();
			fr.close();
		}
		
		//基本流一次读写一个字符数组
			public static void method2(secFileName ,destFileName ) throws IOException{
			FileReader fr = new FileReader(secFileName);
			FileWriter fw = new FileWriter(destFileName);
			char[] chs = new char [1024];
			int len;
			while((len = fr.read())!=-1){
				fw.write(chs,0,len);
			}
	
			//释放资源
			fw.close();
			fr.close();
		}
		
		//缓冲流一次读写一个字符
		public static void method3(secFileName ,destFileName ) throws IOException{
			//创建输入缓冲流
			BufferedReader br = new BufferedReader(new FileReader(secFileName));
			//创建输出缓冲流
			BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName ));
			int ch ;
			while((ch=br.read())!=-1){
				bw.writer(ch);
			}
			//释放资源
			bw.close();
			br.close();
		}
		
		//缓冲流一次读写一个字符数组
		public static void method4(secFileName ,destFileName ) throws IOException{
			//创建输入缓冲流
			BufferedReader br = new BufferedReader(new FileReader(secFileName));
			//创建输出缓冲流
			BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName ));
			char[] chs = new char [1024];
			int len;
			while((len = br.read())!=-1){
				bw.write(chs,0,len);
			}
			//释放资源
			bw.close();
			br.close();
		}

		//缓冲流的特殊功能
			public static void method5(secFileName ,destFileName ) throws IOException{
			//创建输入缓冲流
			BufferedReader br = new BufferedReader(new FileReader(secFileName));
			//创建输出缓冲流
			BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName ));
			String line;
			while((line = br.read())!=null){
				bw.write(line);
				bw.newLine();
				bw.flush();	
			}
			//释放资源
			bw.close();
			br.close();
		}
	}
}

五、把文本文件中的数据读取到集合

从文本文件中读取数据到ArrayList集合中,并便利集合
每一行数据作为一个字符串元素
分析:

1、创建输入缓冲流对象
2、创建集合对象
3、读取数据,每次读取一行数据,把该行数据作为一个元素存储进集合中
4、释放资源
5、遍历集合 

FileToArrayListTest.java

public class FileToArrayTest{
	public static void main(Sring[] args) throws IOException{
		//创建输入缓冲流对象
		BufferedReader br = new BufferedReader(new FileReader("array.txt"));
		//创建集合对象
		ArrayList<String> array = new ArrayList<String>();
		//读取数据
		String line;
		while((line = br.readLine())!= null){
			array.add(line);
		}
		//释放资源
		br.close();
		//遍历集合
		for(int x = 0; x < array.size() ; x++){
			String s = array.get(x);
			System.out.println(s);
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_43801116/article/details/107361429