เมื่ออ่านสตรีมมันมักจะพบโดยการอ่านออกมา ก่อนอื่นชัดเจนแนวคิดและความแตกต่างระหว่างไฟล์ข้อความและไฟล์ไบนารี
ไฟล์ข้อความเป็นไฟล์ที่ใช้ตัวอักษร ไฟล์ไบนารีจะขึ้นอยู่กับไฟล์การเข้ารหัสตามมูลค่า
ดังนั้นจะเห็นได้ว่าไฟล์ข้อความนั้นถูกเข้ารหัสโดยทั่วไป (ยังมีรหัสที่ไม่ได้ใช้งานเช่น UTF-8) และไฟล์ไบนารีสามารถมองเห็นได้นานกว่ารหัสเพราะมันคือการเข้ารหัสค่าจำนวนกัดจำนวนเท่าใดที่คุณกำหนดโดยคุณ
สำหรับไฟล์ไบนารีคุณจะต้องไม่ใช้สตริงเนื่องจากสตริงจะใช้การเข้ารหัสเริ่มต้นของระบบเมื่อสตริงเริ่มต้นเพื่อเริ่มต้น
สำหรับไฟล์ข้อความเนื่องจากการเข้ารหัสได้รับการแก้ไขตราบใดที่คุณอ่านไฟล์ให้ใช้ไฟล์เองเพื่อวิเคราะห์ไฟล์แล้วรับไบต์ .虽然,二进制文件也可以获取到它的文本编码格式,但是那是不准确的,所以不能同日而语。
การดำเนินการเฉพาะมีดังนี้:
1) รับรูปแบบของไฟล์ข้อความ
String สาธารณะ GetFileencode (เส้นทางสตริง) {String charset = "ASCI"; ) ; bis.mark (0); int Read = bis.read (first3bytes, 0, 3); if (read == -1) Return charset; if (first3bytes [0] == (byte) 0xFF && FIRST3bytes [1 ] == (ไบต์) 0xfe) {charset = "unicode"; {{charset = "unicode"; (ไบต์) 0xbf) {charset = "utf8"; ! <= 0xdf <= 0xdf <= 0xdf <= 0xdf <= 0xdf <= 0xdf) {read = bis.read (); 0x80-0xbf) หรืออาจจะดำเนินการต่อ; = อ่าน && อ่าน <= 0xbf) {charset = "utf-8"; + integer.tohexstring (อ่าน);}} catch (ข้อยกเว้น e) {e.printstacktrace ();} ในที่สุด {ถ้า (bis! = null) {ลอง {bis.close ();} จับ ption ex) {}}}}} return charset;} สตริงคงที่ส่วนตัว getencode (int flag1, int flag2, int flag3) {string encode = "" ""; -8) ถ้า (flag1 == 255 && flag2 == 254) {encode = "unicode"; == 191) {encode = "utf8";} else {encode = "asci";2) อ่านโฟลว์ไฟล์ผ่านรูปแบบการเข้ารหัสของไฟล์
/*** รับเนื้อหาของไฟล์ผ่านเส้นทางนี้ ซ */ String สาธารณะ readfile (เส้นทางสตริง) {String data = null; รูปแบบสตริง = fileencode.getFileEncode (พา ธ ); สภาพแวดล้อมไม่ได้หมายถึงการเข้ารหัสระบบปฏิบัติการ // code = system.getProperty ("file.encoding"); 1; char [] buffer = char ใหม่ [1024]; , ความยาว);} data = สตริงใหม่ (sb);} catch (ข้อยกเว้น e) {e.printstacktrace (); (isr! = null) {isr.close ();}} catch (ioexception e) {e.printstacktrace (); }3) เขียนไฟล์ผ่านรูปแบบที่ระบุโดยไฟล์
/*** บันทึกเนื้อหาไฟล์ตามรูปแบบที่ระบุและรูปแบบการเข้ารหัส ในเนื้อหาข้อความวิธีการรักษาความปลอดภัย * * @param data * ข้อมูลไบต์ที่จะเขียนในไฟล์ * @param path * พา ธ ไฟล์มีชื่อไฟล์ * @return boolean * เมื่อการเขียนเสร็จสมบูรณ์ / BYTE DATA [], String Path, String Code) {boolean flag = true; = ไฟล์ใหม่ (file.get parent ()); ฉัน f (! ไฟล์. exists ()) {file.mkdirs ();}}} ถ้า ("asci" .equals (รหัส)) {code = "gbk"; } OSW = New OutputStreamWriter (ใหม่ FileOfputStream (PATH), รหัส); ข้อมูล ("ข้อยกเว้น IO tofile:"+e.getMessage ()); (); log.info ("ข้อยกเว้น io tofile:"+e.getmes sage ()) ;;}} return flag;4) สำหรับไฟล์ไบนารีและมีเนื้อหาน้อยมากเช่นเอกสาร Word ฯลฯ คุณสามารถอ่านและเขียนไฟล์ได้ในรูปแบบต่อไปนี้
/** * อ่านไฟล์จากพา ธ ที่ระบุไปยังอาร์เรย์ไบต์คุณสามารถเลือกวิธีนี้สำหรับเนื้อหารูปแบบที่ไม่ใช่ข้อความบางอย่าง * 457364578634785634534 * พา ธ ไฟล์ * @param พา ธ ไฟล์รวมถึงชื่อไฟล์ * @return byte [] ไบต์ไบต์ไบต์โดยไบต์โดยไบต์โดย byte โดย byte โดย byte โดย byte โดย byte byte byte byte byte byte by byte by byte by byte by byte Stream FileInputStream = ใหม่ FileInputStream (PATH); เนื้อหาไบต์ลงในไฟล์ที่เกี่ยวข้อง * @param data * 将要写入到文件中的字节数据 * @param path * 文件路径, 包含文件名 * @return boolean isok 当写入完毕时返回 true; BYTE DATION [], String Path) โยนข้อยกเว้น {FileOfputStream out = ใหม่ fileOutputStream (พา ธ );ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้