2016-11-27 87 views
0

我将对象数组存储在文本文件中
示例;对象=员工。工作人员由ID,姓名等组成。文本文件中的每行都是StaffID,StaffName等。将对象数组写入正确位置的文本文件

到目前为止,每个员工ID都只是行号,所以添加新的员工资料时,ID就是以前的ID +1并且可以写入文件的末尾。

但是,我改变了ID的结构。它现在由(扇区* 1000)+下一个数字组成。例如。在第二部分工作的5名员工拥有ID 2001,2002,2003,2004,2005。

现在我的问题出现在二分查找完成后。事先,增加新员工很容易,而且仍然按正确顺序排列。但是,现在我需要一种能够将新配置文件写入文本文件中正确位置的方法。

这里有一些片段:

String staffData = staffID, staffName, staffAddress, staffMed; 

这被添加到员工阵列,然后使用下面的代码写的:

try 
    { 
     FileWriter writer = new FileWriter(Filename, true); 
     BufferedWriter bWriter = new BufferedWriter(writer); 
     for(int i =0;i<freeLocation;i++) 
     { 

      String staffString = StaffArray[i].toString(); 

      bWriter.write(currentPositionStaffProfile); 
      bWriter.newLine(); 
     } 
     bWriter.close(); 
    } 

文本文件看起来像这样

1001, John, Address, n/a 
4001, Smith, Address, n/a 

我想知道,如何能够添加一个职员配置文件谁可以写在正确的行之间这样工作人员的ID就会按升序排列,而不仅仅是文件的末尾。

谢谢

+0

什么是您的数据的近似最大大小? –

回答

0

您应该加载文件在内存中的数据存储一样的HashMap或TreeMap和插入新对象给它。

然后写入文件遍历TreeMap(给出键的排序顺序)或从HashMap获取键并对它们进行排序。

因此,您将在此HashMap/TreeMap上执行所有插入/更新/删除操作,并在需要时按照排序顺序将数据写入文件。这样你就不用担心写什么行(就像你当前/建议的解决方案那样)。