使用字符流读取.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));
     }

解决方案 »

  1.   

    我也试过没解决了,数据库里也改成gb2312了,我记得老师好像用的是父类指针指向子类对象(OutputStreamWriter),这里我也不太清楚,不过我提几个建议供参考,看看是否是构造方法的问题,2数据库的编码问题,3流的i/o问题...期望高手出现解决,希望楼主早日解决
      

  2.   

    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(); 
        

    你这不是隔一行一读吗?
      

  3.   

    while((str=br.readLine())!=null){  
        bw.write(str); 
        bw.newLine(); 

    看看,
      

  4.   


    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();
                }
            }