字符流-练习

1.    复制文本文件方式一

在使用计算机的时候,经常会用到复制操作,把一个文本文件从一个位置复制到另一个位置,因为是要操作文本数据,所以使用字符流来实现文件的复制操作。

要实现复制操作,那么首先要明确需要读取的源文件,读取了源文件的数据之后,把源文件的数据写到一个新文件里,这个新文件就是目的文件,这就实现的复制操作。

1.读取一个已有的文本文件,使用字符读取流和文件相关联。读取当前目录下的一个test.txt文件,注意,在Myeclipse里面,当前目录指的是项目目录而不是这个类文件所在的目录。

2.创建一个目的,用于存储读到数据。

3.先用第一种方式频繁的读写操作。

4.关闭流资源。

代码:

package com.java.base;

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

public class CopyTextTest {
    public static void main(String[] args) {
           FileReader fr = null;
           FileWriter fw = null;
           try {
        	   // 1,读取一个已有的文本文件,使用字符读取流和文件相关联。
        	   fr = new FileReader("test.txt");
        	   // 2,创建一个目的,用于存储读到数据。
        	   fw = new FileWriter("test_copy.txt");
        	   // 3,频繁的读写操作。
        	   int ch = 0;
        	   while ((ch = fr.read()) != -1) {
        		   fw.write(ch);
        		   }
        	   } catch (FileNotFoundException e) {
        		   e.printStackTrace();
        	   } catch (IOException e) {
        		   e.printStackTrace();
               } finally {
            	   // 4,关闭流资源。
            	   if (fw != null) {
            		   try {
            			   fw.close();
            			   } catch (IOException e) {
            				   e.printStackTrace();
            				   }
            		   }
            	   if (fr != null) {
            		   try {
            			   fr.close();
            			   } catch (IOException e) {
            				   e.printStackTrace();
            				   }
            		   }
            	   }
           }
    }

运行一下,刷新项目,就可以看到复制的文件了。

 

2.    复制文本文件方式二

读写文件还有另外一种方式,这种方式效率更高。

package com.java.base;

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

public class CopyTextTest2 {
	public static void main(String[] args) {
		FileReader fr = null;
		FileWriter fw = null;
		try {
			fr = new FileReader("test.txt");
			fw = new FileWriter("test_copy.txt");
			//创建一个临时容器,用于缓存读取到的字符。
			char[] buf = new char[1024];//这就是缓冲区。
			//定义一个变量记录读取到的字符数,(其实就是往数组里装的字符个数 )
			int len = 0;
			while((len=fr.read(buf))!=-1){
				fw.write(buf, 0, len);
				}
			} catch (FileNotFoundException e) {
				e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
					} finally {
						// 4,关闭流资源。
						if (fw != null) {
							try {
								fw.close();
								} catch (IOException e) {
									e.printStackTrace();
									}
							}
						if (fr != null) {
                        try {
                        	fr.close();
                        	}catch (IOException e) {
                        		e.printStackTrace();
                        		}
                        }
					}
		}
}

猜你喜欢

转载自blog.csdn.net/pigziprogrammer/article/details/95188150