为什么用JAVA写的一个复制文本文档的程序复制出来文本文档乱码
伐木累.txt是创建的一个文本文档,里面写的是中文,然后伐木累2.txt是复制伐木累.txt的,但是运行后,伐木累2.txt里面乱码。怎么办?...
伐木累.txt是创建的一个文本文档,里面写的是中文,然后伐木累2.txt是复制伐木累.txt的,但是运行后,伐木累2.txt里面乱码。怎么办?
展开
3个回答
展开全部
造成乱码有很多的原因:比如文件编码等
但是这段程序乱码是因为字符流和字节流混用造成的乱码
读取是用的带缓冲区的字符流 BufferedReader 这是按字符读入
写入磁盘是的是字节流 FileOutputStream 这是按字节写出
解决办法,配套使用,字符流和字节流
一:下面使用字节流复制文本
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Demo {
public static void main(String[] args) throws Exception {
File file = new File("c:\\123.txt");
FileOutputStream fos = new FileOutputStream(new File("C:\\123COPY.txt"));
FileInputStream br = new FileInputStream(file);
int len;
while((len=br.read())!=-1){
fos.write(len);
}
br.close();
fos.close();
}
}
二:下面使用字符流复制文本
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class Demo2 {
public static void main(String[] args) throws Exception {
File file = new File("c:\\123.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("c:\\123copy.txt")));
//使用BufferedReader的时候,按照习惯,一般不会使用br.read()方法,
//大家最喜欢用BufferedReader,因为他每次可以读取一行,非常方便
String temp;
while((temp=br.readLine())!=null){
bw.write(temp);//每次写入一行.
bw.newLine();//并且进行换行
}
br.close();
bw.close();
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询