假设我有一个文本文件,我循环遍历每一行。文本文件行如下所示:
1
2
3
4
1
2
3
4
1
2
3
4
我还有一个名为DataHolder的类,我希望每个段都有一个新实例(其中一个段是1 2 3 4行)。 DataHolder类包含1 2 3和4的变量。当迭代器命中空格时,应为下一个1 2 3 4创建DataHolder类的新对象。
我怎样才能做到这一点?这就是我现在所拥有的
File theFile = new File(pathToFile);
try
{
Scanner fileContent = new Scanner(theFile);
DataHolder data = new DataHolder();
while(fileContent.hasNextLine())
{
String line = fileContent.nextLine();
if(line == "")
{
}
}
}
catch(Exception e)
{
// ToDo
}
答案 0 :(得分:3)
此:
if(line == "")
不正确,因为您正在比较参考文献。你应该使用
if(line.equals(""))
然后你可以可靠地比较字符串,然后通过以下方式重新初始化循环中的DataHolder对象:
if(line.equals("")) {
data = new DataHolder();
}
据推测,您需要存储DataHolders的集合,在这种情况下,您可以将其添加到集合中。也许也会调查String.trim()
,这样多个空格就不会破坏你的解析。
答案 1 :(得分:3)
File theFile = new File(pathToFile);
try
{
Scanner fileContent = new Scanner(theFile);
List<DataHolder> dataList = new ArrayList<DataHolder>();
List<String> stringList = new ArrayList<String>();
while(fileContent.hasNextLine())
{
stringList.add(fileContent.nextLine());
if(line.equals(""))
{
if (!stringList.isEmpty())
dataList.add(new DataHolder(stringList));
stringList.clear();
}
}
}
catch(Exception e)
{
// ToDo
}