ホームページ  >  記事  >  Java  >  Java が文字化けしたファイルを書き込む

Java が文字化けしたファイルを書き込む

angryTom
angryTomオリジナル
2019-11-20 17:03:042969ブラウズ

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 中国の Web サイトには無料の Java 入門書が多数あります。チュートリアル、オンライン学習を歓迎します!

以上がJava が文字化けしたファイルを書き込むの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。