使用字符流读取.txt文件时,没有问题,但是用字符缓冲流时乱码。
读取其他文件乱码
public void readFile1(String src,String out) throws FileNotFoundException, UnsupportedEncodingException{
InputStreamReader isd=new InputStreamReader(new FileInputStream(new File(src)));
BufferedReader br=new BufferedReader(isd);
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(out),"gb2312");
BufferedWriter bw=new BufferedWriter(osw);
String str=null;
try {
//字符缓冲流读取
while(br.readLine()!=null){
str=br.readLine();
// String strs="";
// System.out.println(str);
if(str!=null){
// strs=str.getBytes("gb2312").toString();
bw.write(str);
bw.newLine();
}
}
//字符流读取
// char[] ch=new char[1024];
// int len=0;
// while((len=isd.read(ch))!=-1){
// osw.write(ch, 0, len);
// }
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
br.close();
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//System.out.println(check(br,bw));
}
读取其他文件乱码
public void readFile1(String src,String out) throws FileNotFoundException, UnsupportedEncodingException{
InputStreamReader isd=new InputStreamReader(new FileInputStream(new File(src)));
BufferedReader br=new BufferedReader(isd);
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(out),"gb2312");
BufferedWriter bw=new BufferedWriter(osw);
String str=null;
try {
//字符缓冲流读取
while(br.readLine()!=null){
str=br.readLine();
// String strs="";
// System.out.println(str);
if(str!=null){
// strs=str.getBytes("gb2312").toString();
bw.write(str);
bw.newLine();
}
}
//字符流读取
// char[] ch=new char[1024];
// int len=0;
// while((len=isd.read(ch))!=-1){
// osw.write(ch, 0, len);
// }
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
br.close();
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//System.out.println(check(br,bw));
}
str=br.readLine();
// String strs="";
// System.out.println(str);
if(str!=null){
// strs=str.getBytes("gb2312").toString();
bw.write(str);
bw.newLine();
}
你这不是隔一行一读吗?
bw.write(str);
bw.newLine();
}
看看,
InputStreamReader read = null;
BufferedReader br = null;
OutputStreamWriter writer = null;
BufferedWriter bw = null;
try {
File inputPath = new File(读取文件的路径);
read = new InputStreamReader(new FileInputStream(inputPath),"UTF-8");
br = new BufferedReader(read); File outputPath = new File(写出文件的路径);
writer = new OutputStreamWriter(new FileOutputStreamoutputPath),"UTF-8");
bw = new BufferedWriter(writer);
while循环读写文件就不写了
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
bw.close();
read.close();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}