BufferedReader BufferedWriter 中文utf-8下复制copy文件

来源:互联网 发布:易语言cf刷枪源码 编辑:程序博客网 时间:2024/05/06 00:30
package test; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter; /* * @version V17.09 */public class BufferedCopyDemo {    // 我在这里使用 throws,目的是为了方便地阅读代码    // 然而 在做项目中 还是需要使用try..catch对异常做出相应的处理    public static void main(String[] args) throws IOException {        // 文件源头        String pathname = "hello.txt"; // 相对路径下的文件路径        String charsetName = "UTF-8"; // 指定字符集        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(pathname), charsetName));         // 文件目的地        String newPathName = "world.txt";        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newPathName), charsetName));         // 一行一行的读取        String line = null;        while ((line = br.readLine()) != null) {// 读一行            bw.write(line);// 写一行,但是没有进行换行            bw.newLine();// 换行            bw.flush();// 清空缓冲区,把在缓冲区的字符写到文件中        }                 // 这个循环会在文本内容的后面 增加一个空行        // 没有想到如何优化这个问题,就是如何删掉最后一个换行符        // 有待学习                 // 及时的释放资源        br.close();        bw.close();    }}

以上用的转换流InputStreamReader 和 OutputStreamWriter来实现的,此转换流是由字节流转为字符流的,没有由字符流转换为字节流的转换流

直接用BufferedReader BufferedWriter会有中文乱码出现,代码如下:


public static void copyFile(String srcPath, String destPath){Reader reader = null;Writer writer = null;BufferedReader buffReader = null;BufferedWriter buffWriter = null;try {reader = new FileReader(srcPath);writer = new FileWriter(destPath);buffReader = new  BufferedReader(reader);buffWriter = new BufferedWriter(writer);String str = "";while ((str = buffReader.readLine())!=null) {buffWriter.write(str);buffWriter.newLine();buffWriter.flush();}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally{try {if (buffReader!=null) {buffReader.close();}if (buffWriter!=null) {buffReader.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}



阅读全文
0 0