zl程序教程

您现在的位置是:首页 >  后端

当前栏目

JAVA学习第四十八课 — IO流(二):文件的复制 & 缓冲区1

JAVAamp文件学习IO 复制 缓冲区
2023-09-11 14:20:43 时间

一、复制文本文件

将G盘的文本文件拷贝到D盘上

也就是 读取G盘中文本文件的数据。写入D盘中->连读带写

而剪切呢。就是连读带写后,删除原盘的文件

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Main 
{
	public static void main(String[] args) throws IOException {
		
		FileReader fr = null;
		FileWriter fw  = null;
		try {
			fr = new FileReader("G盘.txt");
			fw = new FileWriter("D:\\ACM.txt");
			char[] ch = new char[1024];//缓存读取的数据
			int t ;
			while((t = fr.read(ch))!=-1){
				fw.write(ch,0,t);
			}
		} catch (Exception e) {
			System.out.println("读写失败");
		}finally{
			if(fw!=null)
			{
				try {
					fw.close();
				} catch (Exception e2) {
					throw new RuntimeException();
				}
			}	
			if(fr!=null){
				try {
					fr.close();
				} catch (Exception e2) {
					throw new RuntimeException();
				}
			}	
		}
	}
}</strong></span>

一个文件假设正在使用,是不能被删除的,所以注意要将这两个动作关联起来


二、字符流的缓冲区

实际上,上面的char[]数组就是一个缓冲区。缓冲区的出现提高了对数据的读取效率

BufferedWriter类、BufferedReader类

前提:缓冲区必须结合流才干使用

作用:在流的基础上对流的功能进行了增强

BufferWriter类演示

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

能够指定缓冲区的大小。或者接受默认的大小。在大多数情况下,默认值就足够大了。

特有方法:newLine()

<span style="font-family:KaiTi_GB2312;font-size:18px;">import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Main 
{
	public static void main(String[] args) throws IOException {
		
		FileWriter fw = new FileWriter("ACM.txt");
		//创建一个字符写入流的缓冲区对象,并和指定要被缓冲的流对象相关联 
		BufferedWriter bw = new BufferedWriter(fw);
		//使用缓冲去的方法,将数据写入到缓冲区中
		bw.write("ACM。

。。。"); bw.newLine();//实际上 System.getproperty("line.separator"); bw.write("acm"); //在用缓冲去的刷新方法,将数据写入目的地 bw.newLine(); bw.flush(); for(int i = 0;i<5;i++){ bw.write("1111"); bw.newLine(); bw.flush(); } //关闭缓冲区,事实上关闭的就是被缓冲的流对象fw bw.close(); } } </span>


BufferedReader类演示

从字符输入流中读取文本。缓冲各个字符,从而实现字符、数组和行的高效读取。

能够指定缓冲区的大小,或者可使用默认的大小。大多数情况下。默认值就足够大了。

特有方法:readLine()


<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Main 
{
	

	public static void main(String[] args) throws IOException {
		
		FileReader fr = new FileReader("ACM.txt");
		
		BufferedReader br = new BufferedReader(fr);
		
		String str = null;
	
		while((str = br.readLine())!= null){
			System.out.println(str);
		}
		br.close();
	}
}
</strong></span>

注意:

readLine()方法:使用了读取缓冲区的read方法,将读取到的字符进行缓冲并推断换行标记。将标记前的缓冲数据变成字符串并返回