แล้วพวกเราจะเป็นยังไงเขียนตามวันที่@item:inlistbox sort อาเรย์จะเป็นแฟ้ม(และอ่านมันหลังจากนั้นแฟ้ม)ในงานจาวา?
ใช่เราทุกคนรู้ว่ามันมีแล้วมีคำถามมากมายเหมือนอย่างนั้นแต่พวกเขาเข้ามายุ่งเหยิงและ subjective เนื่องจากความจริงที่ว่ามันมีหลายวิธีที่จะย่อมทำงานนี้.
ดังนั้นปล่อยให้เป็นลดขอบเขตของคำถาม:
โดเมน:
- Android/ของจาวา
สิ่งที่เราต้องการ:
- เร็ว(ที่เป็นไปได้)
- บัฟรี(อยู่ใน rigidly พิถีพิถันทาง)
สิ่งที่เราไม่ทำ:
- คนที่สาม-งานไลบรารี
- มีไลบรารีที่ต้องการ Android รูปแบบ api ทีหลังว่า 23(มาร์ชแมลโลวส์)
(ดังนั้นกฏของ ปูมบันทึกของ apache Commons, ของกูเกิ้ลงฝรั่, จาวา.nioและตอนนี้เราเหลือกับ ดีมพ์ของจาวา.บ io)
สิ่งที่เราต้องการ:
- ตามวันที่@item:inlistbox sort อาเรย์เสมอเหมือนกัน(เนื้อหาและขนาด)หลังจากผ่านการเขียน-แล้ว-อ่านโพรเซส
- เขียนวิธีการเดียวที่ต้องการสองอาร์กิวเมนต์:แฟ้มแฟ้มและตามวันที่@item:inlistbox sort[]ข้อมูล
- อ่านวิธีการจะได้เป็นตามวันที่@item:inlistbox sort[และเพียงต้องการรับอาร์กิวเมนต์หนึ่งตัว:แฟ้มแฟ้ม
ในของฉันโดยเฉพาะกรณีนี้เป็นวิธีการของส่วนตัว(ไม่ใช่ห้องสมุด)และ ไม่มีส่วนต้องรับผิดชอบต่อไปนี้,(แต่ถ้าคุณต้องการสร้างเป็นอีกรูปแบบสากลหาทางที่จะใช้กับต้องมีผู้ชมกว้างกไปสำหรับมัน):
- เธรด-ความปลอดภัย(แฟ้มจะไม่ถูกรถเข้าถึงมากกว่าหนึ่งโพรเซสที่ครั้งนึง)
- แฟ้มการโพรโทคอล aimcomment
- แฟ้มเล็จะไม่ existent ตำแหน่ง
- มันไม่มีสิทธิ์ที่อนุญาตอยู่ที่ตำแหน่งของแฟ้ม
- ตามวันที่@item:inlistbox sort อาเรย์เป็นเหมือนกันใหญ่
- ตามวันที่@item:inlistbox sort อาเรย์เป็นโพรโทคอล aimcomment
- กำลังเจอกับอะไร"ดัชนี,""ความยาว"หรือ"เพิ่ม"อาร์กิวเมนต์/ความสามารถ
ดังนั้น...เราเป็นเหมือในการค้นหาของการวินิจฉัยขั้นสุดท้ายกระสุน-หลักฐานรหัสที่คนอื่นในอนาคตได้ว่าปลอดภัยที่จะใช้เพราะคำตอบของคุณมีหลายขึ้น-คะแนนเสียและไม่มีคำอธิบางที่บอกว่า"นั่นอาจจะตกถ้าหากว่า..."
นี่คือสิ่งที่ฉันต้องถึง:
เขียนไบต์ไปยังแฟ้ม:
private void writeBytesToFile(final File file, final byte[] data) {
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(data);
fos.close();
} catch (Exception e) {
Log.i("XXX", "BUG: " + e);
}
}
อ่านไบต์จากแฟ้ม:
private byte[] readBytesFromFile(final File file) {
RandomAccessFile raf;
byte[] bytesToReturn = new byte[(int) file.length()];
try {
raf = new RandomAccessFile(file, "r");
raf.readFully(bytesToReturn);
} catch (Exception e) {
Log.i("XXX", "BUG: " + e);
}
return bytesToReturn;
}
จากสิ่งที่ฉันได้อ่านหนังสือที่เป็นไปได้ข้อยกเว้นเป็น:
FileNotFoundException:ฉันถูกต้องว่านี่จะไม่เกิดขึ้นนานเท่าที่แฟ้มเส้นทางถูกจัดให้เป็น derived ใช้ Android ของตัวเองภายในเครื่องมือและ/หรือแอพฯถูกทดสอบอย่างเหมาะส?
IOException:ฉันไม่รู้จริงๆว่ามีอะไรเพราะนี่...แต่ฉันสันนิษฐานว่ามันไม่มีทางอยู่ถ้ามันมี
ดังนั้นกับมันอยู่ในใจ...ได้พวกนี้เป็นวิธีการของปรับปรุงหรือแทนที่และถ้าอย่างนั้นกับอะไร?