我有一个非常大的文本文件,其中包含客户信息。我想从文本文件中读取所有客户信息。
这就是我的文本文件的组织方式:
Costomer 1:
Name:
Erik Andersson
Adress:
Street1
Phone number:
085610540
Costomer 2:
Name:
Lars Larsson
Adress:
Street1
Phone number:
085610540
我希望能够阅读所有客户信息。它有什么好办法吗?我读过有关Scanner和Pattern的内容,并想知道在这种情况下使用它们是否是个好主意?我的文本文件非常大,包含数百个客户。
任何人都知道如何从文本文件中读取所有信息?我创建了一个客户变量的类,我只需要帮助读取文本文件。我想以有条理的方式阅读这些信息。
非常感谢所有帮助。
答案 0 :(得分:1)
像这样:
public void getEmployees(File f) throws Exception {
// An ArrayList of your Employee-Object to hold multiple Employees
ArrayList<Employee> employees = new ArrayList<Employee>();
// The reader to read from your File
BufferedReader in = new BufferedReader(new FileReader(f.getAbsolutePath()));
// This will later contain one single line from your file
String line = "";
// Temporary fields for the constructor of your Employee-class
int number;
String name;
String adress;
String phone;
// Read the File untill the end is reached (when "readLine()" returns "null")
// the "line"-String contains one single line from your file.
while ( (line = in.readLine()) != null ) {
// See if your Line contains the Customers ID:
if (line.startsWith("Customer")) {
// Parse the number to an "int" because the read value
// is a String.
number = Integer.parseInt(s.substring("Customer ".length()).substring(0,s.indexOf(':')));
} else if (line.startsWith("Adress:")) {
// The Adress is noted in the next line, so we
// read the next line:
adress = in.readLine();
} else if (line.startsWith("Phone number:")) {
// Same as the Adress:
phone = in.readLine();
} else if (line.startsWith("Name:")){
// Same as the Adress:
name = in.readLine();
} else if ( line.equals("") ){
// The empty line marks the end of one set of Data
// Now we can create your Employee-Object with the
// read values:
employees.add(new Employee(number,name,adress,phone));
}
}
// After we processed the whole file, we return the Employee-Array
Employee[] emplyeeArray = (Employee[])employees.toArray();
}
请给你+1并更正你的hw lol
答案 1 :(得分:1)
作为stas回答的一点延伸:
最初发布的代码不起作用,因为continue
会跳过当前的循环迭代。因此,除非该行以""
开头,否则什么都没做。但是没有为我投票,因为你有正确的想法。
我更新了代码(没有测试它),现在应该可以使用了。
如果您发布代码来回答问题,您应该对其进行评论,以便读者能够理解它的作用。
此外,不要求声誉,这只是不礼貌。