2015-04-24 25 views
0

我的目标是读取对象并将其写入文件(使用文件I/O)。这些对象是存储在动态arrayList中的用户输入(名称,整型值,双值等)。 arrayList在我的主类中声明。作为我的程序的进一步改进,我想将这些数据保存在一个文件中,我创建了另一个类ReaderWriter以实现file I/O我该如何从另一个类访问arrayList(存储在主类中)?

现在我怎样才能得到ReaderWriter类中arrayList的参考?

我的应用程序相当大。我将表明,有关我的问题,它的一部分:为getter和setter

public static void main(String[] args) { 
     System.out.println("WELCOME TO OUR BANK!\n\n"); 

     List<BankAccount> bankAccounts = new ArrayList<BankAccount>(); 
} 

类:

public class BankAccount { 

private String name; 
private int accNum; 
private double initiateAmount; 

//constructor 
public BankAccount() { 

    this.name = null; 
    this.accNum = 0; 
    this.initiateAmount = 0; 

} 

public void setName(String name) { 
    this.name = name; 
......................... 
....................... 
    ............ 

读写器:

public void writeToFile(){ 


    try { 
     FileOutputStream fos=new FileOutputStream("C:\\Users\\Jabir Al Fatah\\Documents\\NetBeansProjects\\BankFile.txt"); 
     ObjectOutputStream oos=new ObjectOutputStream(fos); 
     oos.writeObject();//take the arrayList variable 
     oos.close(); 
     fos.close(); 

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


} 

public void readFromFile(){ 
    try { 

     FileInputStream fis=new FileInputStream("C:\\Users\\Jabir Al Fatah\\Documents\\NetBeansProjects\\BankFile.txt"); 
     ObjectInputStream ois=new ObjectInputStream(fis); 
     //make an arrayList to get those object back 
     //arrayList 

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


} 
+2

把它作为一个参数或发送的构造参考? – user489041

+0

user489041,这是一个问题或评论? – Munira

回答

0

主它在:

public static void main(String[] args) { 
    System.out.println("WELCOME TO OUR BANK!\n\n"); 

    List<BankAccount> bankAccounts = new ArrayList<BankAccount>(); 

    ReaderWriter rw = new ReaderWriter(bankAccounts); 
} 
5

你给你的writeToFile方法一个具有ArrayList类型的参数。现在你在main中创建一个ReaderWriter的实例并使用方法writeToFile。在readFromFile中,你必须添加一个来自ArrayList类型的return语句。现在你可以使用方法来填充ArrayList实例。

正确的代码:

public void writeToFile(ArrayList<BankAccount> accounts){ 


    try { 
     FileOutputStream fos=new FileOutputStream("C:\\Users\\Jabir Al Fatah\\Documents\\NetBeansProjects\\BankFile.txt"); 
     ObjectOutputStream oos=new ObjectOutputStream(fos); 
     oos.writeObject(accounts); 
     oos.close(); 
     fos.close(); 

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


} 

public ArrayList<BankAccount>readFromFile(){ 
    try { 

     FileInputStream fis=new FileInputStream("C:\\Users\\Jabir Al Fatah\\Documents\\NetBeansProjects\\BankFile.txt"); 
     ObjectInputStream ois=new ObjectInputStream(fis); 
     //make an arrayList to get those object back and return the list 


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


} 

主营:

 public static void main(String[] args) { 
      System.out.println("WELCOME TO OUR BANK!\n\n"); 

      List<BankAccount> bankAccounts = new ArrayList<BankAccount>(); 
ReaderWriter rw = new ReaderWriter(); 
rw.writeToFile(bankAccounts); 
List<BankAccount> bankAccounts2 = new ArrayList<BankAccount>(); 
bankAccounts2 = rw.readFromFile(); 


    }