เป็นความคิดที่ดีหรือไม่ที่จะสร้างไฟล์สองไฟล์สำหรับการอ่านและการเขียน

ฉันกำลังสร้างแอปพลิเคชันธนาคารขั้นพื้นฐาน แม้ว่าการใช้ภาษาจาวาจะอยู่ในระดับกลางก็ตาม ที่นั่นฉันใช้ไฟล์อินพุตและเอาต์พุตจำนวนมาก ระหว่างทางมีคำถามบางอย่างผุดขึ้นในใจของฉันเกี่ยวกับ file-i/o ใน java

1) จะเกิดอะไรขึ้นถ้าฉันสร้างไฟล์ข้อความที่แตกต่างกันสองไฟล์สำหรับการเขียนและการอ่านออบเจ็กต์? มันสร้างความแตกต่างหรือไม่?

2) แล้วการระบุพาธ (หรือการให้ชื่อไฟล์) จะเป็นอย่างไรหากฉันใช้ // แทน \\

3) ฉันจำเป็นต้องสร้างวัตถุไฟล์ใหม่เช่นนี้: File file=new File("C://Users//Documents//NetBeansProjects//BankFile_assignment.txt"); ในกรณีเฉพาะของฉันหรือไม่

สุดท้ายแต่ไม่ท้ายสุดหากคุณอาจสงสัยเกี่ยวกับคลาส file-i/o ของฉัน:

    public class ReaderWriter {

    public void writeToFile(List<BankAccount> accounts) {
        try {
            File file = new File("C://Users//Documents//NetBeansProjects//BankFile_assignment.txt");
            FileOutputStream fos = new FileOutputStream(file);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(accounts);//take the arrayList 
            oos.flush();
            oos.close();
            fos.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public List<BankAccount> readFromFile() {
        List<BankAccount> readData = null;
        try {
            File file = new File("C://Users//Documents//NetBeansProjects//BankFile_assignment.txt");
            FileInputStream fis = new FileInputStream(file);
            ObjectInputStream ois = new ObjectInputStream(fis);
            readData = (List<BankAccount>) ois.readObject();

            ois.close();
            fis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return readData;

    }
}

person Munira    schedule 02.05.2015    source แหล่งที่มา
comment
ขึ้นอยู่กับว่า หากคุณอนุญาตให้โปรแกรมของคุณอ่านและเขียนพร้อมกันอาจเป็นวิธีแก้ปัญหาที่ไม่ดีกับไฟล์เดียว (stackoverflow.com/questions/2751734/) คุณเคยคิดเกี่ยวกับการใช้ฐานข้อมูลหรือไม่? ฉันคิดว่าการใช้ MySQL นั้นง่ายกว่าการใช้ไฟล์เพื่อจัดเก็บข้อมูลของคุณเสมอ   -  person Fabian Lurz    schedule 02.05.2015


คำตอบ (1)


1) วิธีที่ดีกว่าคือการใช้ฐานข้อมูล (mySQL, SQLite,...) เพื่อเข้าถึงข้อมูลทั้งหมดของคุณได้อย่างง่ายดายโดยไม่ต้องกังวลเรื่อง I/O

2) หากแอปพลิเคชันของคุณอาจทำงานบนระบบปฏิบัติการที่แตกต่างกัน วิธีที่ปลอดภัยในการหลีกเลี่ยงปัญหากับสัญลักษณ์เฉพาะของระบบ ( \ บน Windows, / บน Unix, Mac) ก็คือการใช้ File.separator เป็นต้น ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้

3) ต้องทำงานบน Windows แต่ล้มเหลวบน Unix คุณสามารถใช้ (พร้อมการปรับเปลี่ยนเส้นทาง) สิ่งนี้แทน: File file = new File(System.getProperty("user.home")+ File.separator + BankFile_assignment.txt); ดูสิ่งนี้ .

person Drimux    schedule 02.05.2015