ファイルのストリームを読むと、Garled Codeの原因は確かに1つです。まず、明らかに、テキストファイルとバイナリファイルの概念と違い。
テキストファイルは、文字ベースのファイルです。バイナリファイルは、特定のアプリケーションに従って特定の値を指定することができます(このようなプロセスはカスタムエンコードと見なすことができます)。
したがって、テキストファイルが基本的にコーディングされていることがわかります(UTF-8などの固定コードもあります)。バイナリファイルは、値のエンコードであるため、長いコード化されていると見なすことができます。
バイナリファイルの場合、文字列のデフォルトを初期化し、操作し、バイトフローで書き込むことができるため、文字列を使用してはなりません。
テキストファイルの場合、エンコードはファイルを読み取る限り、ファイルを使用してファイルを分析し、次にバイトを取得します。 。バイナリファイルはテキストエンコード形式を取得することもできますが、不正確であるため、同時に言うことはできません。
特定の操作は次のとおりです。
1)テキストファイルの形式を取得します
public string getFileEncode(String Path = "ASCI"] first3byte [3] )bis.mark(0); ] ==(byte)0xfe){charset = "unicode"; // utf-16le checked = true;} {charset = "unicode"; // utf-16be check = true;} else(first3bytes [0] ==(byte)0xef && first3bytes [1] ==(byte)0xbb && first3bytes [2 2] == (byte){charset = "true;} ! <= 0xdf <= 0xdf <= 0xdf <= 0xdf <= 0xdf <= 0xdf){read = bis.read(); 0x80-0xbf)、または継続する可能性があります= read && read <= 0xbf){charset = "utf-8";} els break;} //textlogger.getlogger().info(loc + "" "" "" "" " + integer.tohexstring(read);}} catch(exception e){e.printstacktrace();}最後に{if(bis!= null){try {bis.close();} catch ption ex){}}}}}} return charset;} private static string getEncode(int flag1、int flag2、int flag3){string encode = "" ""; -8)if(flag1 == 255 && flag2 == 254){encode = "unicode"; == 255){encode = "utf-16";} == 191){encode = "utf8";} else {encode = "asci";2)ファイルのエンコード形式を介したファイルフローを読み取ります
/***パスを介してファイルのコンテンツを取得します。 ! */ public string readfile(string path){null;フォーマットcode = fileencode.getFileencode(PATH);環境は、// code = system.getProperty( "file.encoding"); 1 char = new char [1024]; 、length);} data = new String(sb);} catch(exceps e){e.printstacktrace(); (isr!= null){isr.close();}} catch(exception e){e.printstacktrace(); }3)ファイルで指定された形式を介してファイルを書き込む
/***指定されたパスとエンコード形式に従って、このメソッドは、ファイルを正しく記述するために使用されるため、キャリアとして使用されます。テキストコンテンツに、セキュリティ方法 * * @paramデータ * @paramパス *ファイル名 * @return boolean * writingが完了したら、file name *が含まれています。 / public static boolean writefile(byte path、string code){boolean flag = true; = new file(file.get parent()); i f(!file.exists()){file.mkdirs();}}} } osw = new outputStreamWriter(PATH)、code); info( "tofile io例外:"+e.getmessage()); fally {try {if(osw!= null){osw.close();}} catch(exception e){e.printstacktrace (); log.info( "tofile io例外:"+e.getmes sage();;}} flag;}4)バイナリファイルの場合、Word Documentationなどのコンテンツはほとんどありません。次の方法でファイルを読み書きできます。
/** *指定されたパスからバイト配列へのファイルの読み取り、いくつかの非テキスト形式コンテンツにこのメソッドを選択できます * 457364578634785634534 * @return byte [] @return byte byteを含むファイルパス *バイトバイトバイテによるバイトバイトバイテによるバイトバイトバイトバイトバイトバイトバイトバイトバイトバイトバイトバイトバイトバイトバイトアレイ * * */ public static(] getFile(String Path)はioexceptionをスローします。 FileInputStream = new FileInputStream(PATH);対応するファイルへのバイトコンテンツは、一部の非テキストファイルに使用できます。 * @paramデータ * @param path *文件路径 * @return boolean isokバイトデータ、exception {fileoutputStream(data)をスローします。上記は、この記事のすべての内容です。