[英]How to append and alter data in specific file locations
晚上好,堆栈溢出! 我正在一个类似于Windows访问控制列表的项目,但是遇到了问题。 我需要使用文件来跟踪谁在哪个组中,因此,例如,在我的文件中,我想拥有以下内容:
我一直只是将数据追加到列表中,所以更像是这样:
我还需要能够无序添加内容,例如,如果我将Admin添加到Admins,将Sarah添加到Accounting,然后将Mike添加到Admins,是否有办法使所有数据保持顺序?
我想知道如何解决此问题,将数据附加到特定位置,以免看起来像火车残骸。
谢谢!
您不能将数据直接附加到文件中。 您可以使用RandomAccessFile
读取所有内容并将插入数据更改到特定位置。 这是有关如何执行此操作的很好的教程: http : //tutorials.jenkov.com/java-io/randomaccessfile.html
以下是如何在装入内存的文件中间插入东西:
// open file for reading and writing
RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw");
// go to a certain position
file.seek(200);
// write hello world in ths position
file.write("Hello World".getBytes());
// close file - this should be done in the finally clause
file.close();
但是,我不会遵循这种方法。 您为什么不将所有内容都放入CSV文件中,使用Java读取它们,将内容放入列表中,进行所需的任何插入,删除和排序操作(对字符串进行排序,然后将其保存)到文件中系统再次?
您可以使用OpenCSV读取CSV文件,下面是一个示例:
... import java.util.*;
public class ParseCSV {
public static void main(String[] args) {
try {
//csv file containing data
String strFile = "MyCSvFile.csv";
CSVReader reader = new CSVReader(new FileReader(strFile));
String [] nextLine;
// list holding all elements - they can be later be maniulated
List<String> elements = new ArrayList<String>();
while ((nextLine = reader.readNext()) != null) {
for (int i = 0; i < nextLine.length;i++) {
elements.add(nextLine[i]);
}
}
}
}
}
按照这种方法,然后要在列表的中间或列表的末尾插入元素,需要适当地使用数据结构,最后将它们写入磁盘,如果需要的话,也可以使用OpenCSV 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.