遇到的问题------java读写txt出现乱码


Java FileWriter 默认是用(ISO-8859-1 or US-ASCII)西方编码的,总之不是UTF-8的,而FileWriter类有getEncoding方法,却没有setEncoding的方法,如下的写法可以使正确输出UTF-8的文件: 
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(path),"UTF-8"); 
或者 
Writer out = new BufferedWriter( new OutputStreamWriter(new FileOutputStream(this.outputFilename),”UTF-8″));


把FileWriter修改为用FileOutputStream并设置编码即可解决乱码问题,修改的地方如下:

注释的为原用法

写文件:

public static void writeFile(String fileName, String fileContent)   
{     
    try   
    {      
        File f = new File(fileName);      
        if (!f.exists())   
        {       
            f.createNewFile();      
        }      
        OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"utf-8");      
        BufferedWriter writer=new BufferedWriter(write);  
        // BufferedWriter writer = new BufferedWriter(new FileWriter(f));
        writer.write(fileContent);      
        writer.close();     
    } catch (Exception e)   
    {      
        e.printStackTrace();     
    }  
}  


读文件:

public static String readFile(String fileName)  
{     
    String fileContent = "";     
    try   
    {       
        File f = new File(fileName);      
        if(f.isFile()&&f.exists())  
        {       
            InputStreamReader read = new InputStreamReader(new FileInputStream(f),"gbk");       
            BufferedReader reader=new BufferedReader(read);       
            String line;       
            while ((line = reader.readLine()) != null)   
            {        
                fileContent += line;       
            }         
            read.close();      
        }     
    } catch (Exception e)   
    {         
        e.printStackTrace();     
    }     
    return fileContent;   
}   


你可能感兴趣的:(java,IO,乱码,txt,读写)