Java使用字符流拷贝文件出现乱码

Java代码


//      BufferedReader in = null;

//      BufferedWriter out = null;

Reader in = null;

Writer out = null;

try {

//          in = new BufferedReader(new FileReader(src));

//          in = new BufferedReader(new InputStreamReader(new FileInputStream(src)));

//          out = new BufferedWriter(new FileWriter(new File(dir, src.getName())));

//          out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(dir, src.getName()))));

in = new FileReader(src);

out = new FileWriter(new File(dir, src.getName()));

System.out.println("正在拷贝文件(" + src + ")到目录("+dir+")下");

char[] buffer = new char[1024];

int len = 0;

while((len = in.read(buffer)) != -1) {

out.write(buffer, 0, len);

out.flush();

}

return true;

} catch (Exception e) {

return false;

} finally {

closeIO(in, out);

}

  乱码情况

<img src="http://img.blog.csdn.net/20140414090344562?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaWNlcl93ZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

  怎样解决?

  我想知道这种情况是怎么造成的?又该怎样解决?

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-19 20:38:15

Java使用字符流拷贝文件出现乱码的相关文章

字节流-JAVA缓冲字符流在实例化传入的必须是字符流吗?

问题描述 JAVA缓冲字符流在实例化传入的必须是字符流吗? 缓冲字符流在实例化传入的必须是字符流吗?可以传入 InputStream或OutputStream吗? 今天看代码遇到了这样的写法,不知道这种写法对不对,求告知原因! OutputStream os=new FileOutputStream("pw.txt",true); PrintWriter pw = new PrintWriter(os,true); 解决方案 首先你得捕获异常,应该这样 OutputStream os

Java基于IO流读取文件的方法_java

本文实例讲述了Java基于IO流读取文件的方法.分享给大家供大家参考,具体如下: public static void readFile(){ String pathString = TEST.class.getResource("/simu").getFile(); try { pathString = URLDecoder.decode(pathString, "utf-8"); } catch (UnsupportedEncodingException e1)

Java IO: 字符流的Piped和CharArray

本章节将简要介绍管道与字符数组相关的reader和writer,主要涉及PipedReader.PipedWriter.CharArrayReader.CharArrayWriter. PipedReader 原文链接 PipedReader能够从管道中读取字符流.与PipedInputStream类似,不同的是PipedReader读取的是字符而非字节.换句话说,PipedReader用于读取管道中的文本.代码如下: Reader reader = new PipedReader(pipedW

Java IO: 字符流的Buffered和Filter

本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader.BufferedWriter.FilterReader.FilterWriter. BufferedReader 原文链接 BufferedReader能为字符输入流提供缓冲区,可以提高许多IO处理的速度.你可以一次读取一大块的数据,而不需要每次从网络或者磁盘中一次读取一个字节.特别是在访问大量磁盘数据时,缓冲通常会让IO快上许多. BufferedReader和BufferedInputStrea

字节流转成字符流(串) 乱码

问题描述 word字节流转成字符串会出现乱码,解决不了,各种编码都试过了,只能班.保存到本地.. 解决方案 解决方案二:啥意思???-解决方案三:就是读取word的字节流不能转成string字符串

java IO之 字符流 (字符流 = 字节流 + 编码表) 装饰器模式

字符流 计算机并不区分二进制文件与文本文件.所有的文件都是以二进制形式来存储的,因此, 从本质上说,所有的文件都是二进制文件.所以字符流是建立在字节流之上的,它能够提供字符 层次的编码和解码.列如,在写入一个字符时,Java虚拟机会将字符转为文件指定的编码(默认 是系统默认编码),在读取字符时,再将文件指定的编码转化为字符. 常见的码表如下: ASCII:           美国标准信息交换码.用一个字节的7位可以表示. ISO8859-1:   拉丁码表.欧洲码表,用一个字节的8位表示.又称

Java字符流和字节流对文件操作的区别_java

记得当初自己刚开始学习Java的时候,对Java的IO流这一块特别不明白,所以写了这篇随笔希望能对刚开始学习Java的人有所帮助,也方便以后自己查询.Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,然后再输出到另一个文件中.而字符流操作的最小单位则是字符.可以先看一下IO流的概述:   下面首先是通过字符流对文件进行读取和写入: package lib; import jav

java笔记八:IO流之字符流与字符缓冲流

java中字符流主要都是继承于Reader和Writer两个抽象类.用于对字符文本的读写操作.   一.转换类流 1 package com.iotest; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStreamRe

java 字节流和字符流的区别

字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示. <iframe id="iframe_0.4142593172691813" style="margin: 0px; padding: 0px; border-width: initial; border-style: none; width: