Saat membaca aliran file, sering kali ditemui oleh penyebab kode kacau tentu saja. Pertama, jelas, konsep dan perbedaan antara file teks dan file biner.
File teks adalah file berbasis karakter. File biner didasarkan pada file encoding berbasis nilai.
Oleh karena itu, dapat dilihat bahwa file teks pada dasarnya diberi kode (ada juga kode non-fix seperti UTF-8). Dan file biner dapat dilihat sebagai kode panjang, karena itu adalah pengkodean nilai, berapa banyak gigitan yang mewakili nilai, yang ditentukan oleh Anda.
Untuk file biner, Anda tidak boleh menggunakan string, karena string akan menggunakan pengkodean default sistem saat string default untuk inisialisasi.
Untuk file teks, karena pengkodean diperbaiki, selama Anda membaca file, menggunakan file itu sendiri untuk menganalisis file, dan kemudian mendapatkan byte. . Meskipun file biner juga bisa mendapatkan format pengkodean teksnya, itu tidak akurat, sehingga tidak dapat dikatakan pada saat yang sama.
Operasi spesifiknya adalah sebagai berikut:
1) Dapatkan format file teks
Public String getFileEncode (string path) {string charset = "ASCI"; ); ] == (byte) 0xfe) {charset = "unicode"; {{Charset = "unicode"; // utf-16be check = true;} else if (first3bytes [0] == (byte) 0xef && first3bytes [1] == (byte) 0xbb && first3bytes [2 2] == (byte) 0xbf) {charset = "utf8"; = - 1) {loc ++; <= 0xdf <= 0xdf <= 0xdf <= 0xdf <= 0xdf <= 0xdf) {baca = bis.read (); 0x80-0xbf), atau mungkin lanjutkan; = Baca && baca <= 0xbf) {charset = "utf-8"; + Integer.tohexString (baca);}} catch (exception e) {e.printstacktrace ();} akhirnya {if (bis! = Null) {coba {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"; == 191) {encode = "utf8";} else {encode = "ASCI";2) Baca aliran file melalui format pengkodean file
/*** Dapatkan konten file melalui jalur. Lai */ Public String ReadFile (string path) {String Data = NULL; Format Kode String = Fileencode.GetFileEncode (PATH); Lingkungan tidak berarti pengkodean sistem operasi // Code = System.getProperty ("File.encoding"); 1; , panjang);} data = string baru (sb);} catch (pengecualian e) {e.printstacktrace (); (isr! = null) {isr.close ();}} catch (ioException e) {e.printstacktrace (); }3) Tulis file melalui format yang ditentukan oleh file
/*** Simpan konten file sesuai dengan jalur yang ditentukan dan format pengkodean. ke konten teks, metode keamanan * * @param data * Data byte yang akan ditulis dalam file * @param path * path file, berisi nama file * @return boolean * Ketika penulisan selesai, kembali ke true; / Public static boolean writeFile (data byte [], string path, string code) {boolean flag = true outputStreamWriter osw = null; = file baru (file.get induk ()); } OSW = OutputStreamWriter baru (FileOutputStream baru (PATH), kode); info ("Tofile IO Exception:"+e.getMessage ()); ();4) Untuk file biner dan ada sangat sedikit konten, seperti dokumentasi kata, dll., Anda dapat membaca dan menulis file dengan cara berikut
/** * Baca file dari jalur yang ditentukan ke array byte, Anda dapat memilih metode ini untuk beberapa konten format non -text * 457364578634785634534 * jalur file * @param *, termasuk nama file * @return byte [] * byte file byte file byte file byte file byte file * byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte. FileInputStream Stream = FileInputStream baru (PATH); Konten byte ke dalam file yang sesuai. * @param data * 将要写入到文件中的字节数据 * @param path * 文件路径, 包含文件名 * @return boolean isok 当写入完毕时返回 true; Data byte, string path) Lempar Exception {FileOnputStream out = FileOnputStream baru (PATH) out.write (data);Di atas adalah semua isi artikel ini.