用Java解析文本文件

时间:2014-10-13 07:06:23

标签: java

我正在尝试从文本文件中读取输入(只读arraylist中的数字)。我的文本文件看起来像包含数字(146,7,-1,-2,3)。它实际上是这样的: HEADER 1467年1月23日

现在,当我在文件中放入HEADER字符串时,我的代码将不会读取第一个数字,在我的情况下是146,并以第二个数字#34; 7"开始。但是,当字符串HEADER是不存在,146也被阅读,这显然是我想要的。我的代码是这样的:

String pathToWrite="C:\\Users\\User\\Desktop\\Hello.txt";

 FileReader fr=new FileReader(pathToWrite);
     BufferedReader bufferedReader=new BufferedReader(fr);

     String aLine=null;
     int numberOfLine=0;
    List<Integer> list = new ArrayList<Integer>();
    List<Integer> list2 = new ArrayList<Integer>();


    while((aLine=bufferedReader.readLine()) != null )
     {
            if(numberOfLine > 1) //since header lies in first line,I want to skip that line
            {
             list.add(Integer.parseInt(aLine));
            }
             numberOfLine++;


     }

想要了解如何更改代码以读取第一个数字的建议吗? 提前致谢

5 个答案:

答案 0 :(得分:1)

该文件如下:

HEADER
146
7
1
23

?然后尝试if(numberOfLine > 0)。这是因为你开始从零开始计算。

答案 1 :(得分:0)

使用String的分割功能

分割你的线
String [] numbers = aLine.split(",");

这将为您提供数组中的所有数字。

我希望它可以解决您的疑问!!!

答案 2 :(得分:0)

典型的>>=错字。只需将if(numberOfLine > 1)更改为if(numberOfLine >= 1)即可。

答案 3 :(得分:0)

该文件是这样的吗?

HEADER 1467-1-23

如果是这样的话,举一个第二行的例子。因为这是id = 0的一行; 或者像这样?

HEADER
1467-1-23
...

答案 4 :(得分:0)

更改您的if语句或numberOfLine = 0;变量。您可以执行以下操作之一

案例1:

int numberOfLine=0;

while((aLine=bufferedReader.readLine()) != null )
     {
            if(numberOfLine >= 1) //since header lies in first line,I want to skip that line
            {
             list.add(Integer.parseInt(aLine));
            }
             numberOfLine++;


     }

=============================================== =============
案例2:

int numberOfLine=1;

while((aLine=bufferedReader.readLine()) != null )
     {
            if(numberOfLine > 1) //since header lies in first line,I want to skip that line
            {
             list.add(Integer.parseInt(aLine));
            }
             numberOfLine++;


     }