七叶笔记 » java编程 » java写入文件是乱码

java写入文件是乱码

java写入文件是乱码

我们读取、写入文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题。首先,明确一点,文本文件与二进制文件的概念与差异。

文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码、ANSI编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。)

因此可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8)。而二进制文件可看成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。

具体操作如下:

通过文件指定的格式写入文件

/**   * 按照指定的路径和编码格式保存文件内容,这个方法因为用到了字符串作为载体,为了正确写入文件(不乱码),只能写入文本内容,安全方法   *    * @param data   *     将要写入到文件中的字节数据   * @param path   *     文件路径,包含文件名   * @return boolean    *      当写入完毕时返回true;   */  public static boolean writeFile(byte data[], String path , String code){    boolean flag = true;    OutputStreamWriter osw = null;    try{      File file = new File(path);      if(!file.exists()){        file = new File(file.getParent());        if(!file.exists()){          file.mkdirs();        }      }      if("asci".equals(code)){        code = "GBK";      }      osw = new OutputStreamWriter(new FileOutputStream(path),code);      osw.write(new String(data,code));      osw.flush();    }catch(Exception e){      e.printStackTrace();      log.info("toFile IO Exception:"+e.getMessage());      flag = false;    }finally{      try{        if(osw != null){          osw.close();        }      }catch(IOException e){        e.printStackTrace();        log.info("toFile IO Exception:"+e.getMessage());        flag = false;      }    }    return flag;  }

php中文网,大量的免费Java入门教程,欢迎在线学习!

相关文章