基本思想是创建一个文件阅读器对象
FileReader fr = new FileReader('file.txt');
然后逐行遍历文件,解析每一行并将内容保存到一些内部数据存储(数组,哈希映射)。
您所拥有的示例中的 while 循环就是这样做的。该FileReader
课程将为您处理行尾,并null
在没有更多行可读取时返回。在 while 循环中需要做的是解析每一行并将不同的数据位(课程名称、价格等)彼此分开。
编辑:要解析行,您将执行以下操作。while 循环中的内容取决于您如何格式化菜单文件。以下假设菜单文件包含价格和课程名称(按此顺序),每行用逗号分隔。
12.95$,Penne ala Arabiata
8.15$,Fish Soup
请注意,如果您这样做,您不能在价格中使用逗号。您当然可以使用分号而不是逗号作为数据字段之间的分隔符。数据字段的数量当然也取决于您。
String line = "";
// read lines from file
while ((line = fr.readLine()) != null) {
// parse each line
tokens = line.split(",");
String price = tokens[0];
String courseName = tokens[1];
// extract all other information
}
在您的最终代码中,您需要将数据字段保存到某种结构中,而不仅仅是从文件中提取它们。需要注意的另一件事是,由于美元符号,价格是字符串而不是数字。如果您希望对价格进行任何计算,您当然需要使用parseFloat()
或将其转换为数字parseDouble()
。
当然,如果您确实使用 csv(逗号分隔值)格式,最好使用 csv 库为您进行解析,而不是自己编写解析器。
http://opencsv.sourceforge.net/