Beim Lesen des Dateistroms wird dies häufig von verstümmelter Code angetroffen. Erstens, die Konzepte und Unterschiede zwischen Textdateien und Binärdateien.
Textdateien sind charakteristische Dateien. Binärdateien basieren auf value -basierten Codierungsdateien.
Daher ist ersichtlich, dass die Textdatei grundsätzlich codiert wird (es gibt auch nicht fixierte Codes wie UTF-8). Und binäre Dateien können als lange codiert angesehen werden, da es sich um eine Wertcodierung handelt. Wie viele Bissen einen Wert darstellen, der von Ihnen bestimmt wird.
Für Binärdateien dürfen Sie keine Zeichenfolge verwenden, da die Zeichenfolge die Standard -Codierung verwendet, wenn die String -Standardeinstellung zur Initialisierung gelesen, betrieben und mit Byte -Flow geschrieben werden kann.
Für Textdateien, da die Codierung festgelegt ist, so lange Sie die Datei lesen, verwenden Sie die Datei selbst, um die Datei zu analysieren und dann das Byte zu erhalten. . Obwohl Binärdateien auch das Textcodierungsformat erhalten können, ist es ungenau, sodass es nicht gleichzeitig gesagt werden kann.
Der spezifische Betrieb ist wie folgt:
1) Erhalten Sie das Format der Textdatei
Public statische String GetFileCode (String -Pfad) {String charset = "ASCI"; ); ] == (byte) 0xfe) {charset = "unicode"; {{Charset = "unicode"; (byte) 0xbf) {charset = "utf8"; ! = - 1) {loc ++; <= 0xdf <= 0xdf <= 0xdf <= 0xdf <= 0xdf <= 0xdf) {read = Bis.Read (); 0x80-0xbf) oder kann weitermachen; = Read && read <= 0xbf) {charset = "utf-8"; + Integer.tohexString (read);}} catch (Ausnahme E) {e.printstacktrace ();} schließlich {if (bis! Return charSet;} private statische String -GetEncode (int flag1, int flag2, int flag3) {string enCode = "" ""; -8) if (flag1 == 255 && flag2 == 254) {enCode = "unicode"; == 191) oder2) Lesen Sie den Dateifluss durch das Codierungsformat der Datei durch
/*** Erhalten Sie den Inhalt der Datei über den Pfad. ! */ public statische String -ReadFile (String -Pfad) {String Data = null; Format String code = FileCode.getFileCode (Path); Umgebung bedeutet nicht, dass das Betriebssystem codieren // Code = System.getProperty ("Datei.Coding"); 1; , Länge);} data = new String (SB);} catch (Ausnahme E) {E.printstacktrace (); (isr! }3) Schreiben Sie die Datei über das von der Datei angegebene Format
/*** Speichern Sie den Dateiinhalt gemäß dem angegebenen Pfad und dem Codierungsformat. In den Textinhalten, Sicherheitsmethode * * @param -Daten * Die Byte -Daten, die in der Datei geschrieben werden * @param Pfad * Dateipfad, enthält den Dateinamen * @return boolean *, wenn das Schreiben abgeschlossen ist, zu True; / Public boolean writefile (byte data [], String -Pfad, String -Code) {Boolean Flag = true; = neue Datei (Datei.get Parent ()); } Osw = neuer Ausgabestreamwriter (neuer FileOutputStream (Path), Code); Info ("Tofile IO -Ausnahme:"+e.getMessage ()); ();4) Für Binärdateien und es gibt nur sehr wenige Inhalte, wie z. B. Word -Dokumentation usw. Sie können Dateien auf folgende Weise lesen und schreiben
/** * Lesen Sie Dateien aus dem angegebenen Pfad zum Byte -Array. Sie können diese Methode für einen Inhalt des Nicht -Text -Formats auswählen Byte Byte Byte durch Byte durch Byte durch Byte durch Byte durch Byte Byte Byte Byte Byte durch Byte durch Byte durch Byte. FileInputStream stream = new FileInputStream (Pfad); Der Byte -Inhalt in die entsprechende Datei. * @param data * 将要写入到文件中的字节数据 * @param Pfad * 文件路径, 包含文件名 * @return boolean isok 当写入完毕时返回 true; Byte Data [], String -Pfad) Ausnahme {FileOutputStream Out = New FileputStream (Path);Das obige ist der gesamte Inhalt dieses Artikels.