zoukankan      html  css  js  c++  java
  • 写txt文件在AIX5.3系统中乱码

    /**
         * 写文本内容到txt文件
         * @param fileContent  文件内容
         */
        public  void writeResultFile(String fileContent) {    
            //文件存放目录
            String fileDir=ConstDefine.FILE_DIR;
            //文件名
            String fileName =new  SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+".txt";
            File resultFile = new File(fileDir,fileName);
            BufferedReader bufferedReader = null; 
            BufferedWriter bufferedWriter = null; 
            try { 
                 bufferedReader = new BufferedReader(new StringReader(fileContent)); 
                 bufferedWriter = new BufferedWriter(new FileWriter(resultFile)); 
                 char buf[] = new char[1024];         //字符缓冲区 
                 int len; 
                 while ((len = bufferedReader.read(buf)) != -1) { 
                     bufferedWriter.write(buf, 0, len); 
                 } 
                
            } catch (IOException e) { 
                
                 e.printStackTrace(); 
            } finally {
                 try {
                    bufferedWriter.flush();
                    bufferedReader.close(); 
                    bufferedWriter.close(); 
                } catch (IOException e) {
                    e.printStackTrace();
                } 
            }
        }

      

      上面这个方法就是把文本内容写到txt文件中,在Window系统和Red Hat Linux 系统中都没有问题,但是在AIX5.3系统中写到txt文件后就会变成乱码。

      修改后的方法如下:(写文件的时候加上编码)

    /**
         * 写文本内容到txt文件
         * @param fileContent  文件内容
         */
        public void writeResultFile(String fileContent) {
            //文件存放目录
            String fileDir=ConstDefine.FILE_DIR;
            //文件名
            String fileName =new  SimpleDateFormat("yyyyMMddHHmmsszzz").format(new Date())+".txt";
            File resultFile = new File(fileDir,fileName);
            BufferedWriter bufferedWriter = null; 
            try { 
                 bufferedWriter = new BufferedWriter(new OutputStreamWriter (new FileOutputStream(resultFile),"GBK")); 
                 bufferedWriter.write(fileContent,0,fileContent.length());
            } catch (IOException e) { 
                 e.printStackTrace(); 
            } finally {
                 try {
                    bufferedWriter.flush();
                    bufferedWriter.close(); 
                } catch (IOException e) {
                    e.printStackTrace();
                } 
            }
        }

      

      修改后的方法在window、Linux和AIX系统中都没有发生乱码。

      如果读取文件的时候遇到乱码,也可以加上编码:

    BufferedReader br = new BufferedReader(new InputStreamReader (new FileInputStream(new File(filePath)),"GBK")); 

      

      

  • 相关阅读:
    C++11 std::function函数包装器
    C++ spdlog日志管理
    c++ error C2663:n个重载没有“this”指针的合法转换
    nlohmann json for modern C++
    更新CMake3.16+的方法
    VS 设置Tab为空格
    Visual Studio 2019 UTF-8编码调试显示中文
    Notepad++ 设置Tab为空格
    C++11 =default 和 =delete
    C++11 constexpr
  • 原文地址:https://www.cnblogs.com/luxh/p/2684594.html
Copyright © 2011-2022 走看看