阅读特定的行 - Java

时间:2011-08-16 03:52:48

标签: java text line

我需要从1个.txt文件中检索两行并将它们输出到对话框中。我现在的代码是

private String getfirstItem() {
     String info = "";
     File details = new File(myFile);
     if(!details.exists()){
            try {
                details.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

      BufferedReader read = null;
    try {
        read  = new BufferedReader (new FileReader(myFile));
    } catch (FileNotFoundException e3) {
        e3.printStackTrace();
    }

     for (int i = baseStartLine; i < baseStartLine + 1; i++) {
                  try {
                info = read.readLine();
                } catch (IOException e) {

                    e.printStackTrace();
                }
            } 
            firstItem = info;             
          try {
              read.close();
        } catch (IOException e3) {

            e3.printStackTrace();
        }
          return firstItem;
}

private String getsecondItem() {
    File details = new File(myFile);
    String info = "";
   BufferedReader reader = null;
  if(!details.exists()){
try {
    details.createNewFile();
} catch (IOException e) {
    e.printStackTrace();

}}



try {
reader   = new BufferedReader (new FileReader(myFile));
} catch (FileNotFoundException e3) {
    e3.printStackTrace();
    }

 for (int i = modelStartLine; i < modelStartLine + 1; i++) {
          try {
     info= reader.readLine();
            } catch (IOException e) {
        e.printStackTrace();}
        modelName = info;}  try {
          reader.close();
} catch (IOException e3) {
    e3.printStackTrace();
    }
 return secondItem;
}

然而,我两个都持续获得相同的价值? modelStartLine = 1,baseStartLine = 2

2 个答案:

答案 0 :(得分:2)

你实际上从未跳过任何行。您从不同的数字开始循环索引,但您仍然只从文件的开头循环一次。你的循环应该是这样的:

public string readNthLine(string fileName, int lineNumber) {
    // Omitted: try/catch blocks and error checking in general
    // Open the file for reading etc.

    ...

    // Skip the first lineNumber - 1 lines
    for (int i = 0; i < lineNumber - 1; i++) {
        reader.readLine();
    }

    // The next line to be read is the desired line
    String retLine = reader.readLine();

    return retLine;
}

现在您可以像这样调用函数:

String firstItem = readNthLine(fileName, 1);
String secondItem = readNthLine(fileName, 2);

然而。由于您只需要文件的前两行,您最初可以读取它们:

// Open the file and then...
String firstItem = reader.readLine();
String secondItem = reader.readLine();

答案 1 :(得分:0)

这是对的。您只能以两种方式读取文件的第一行。当您创建一个新的Reader并使用readLine()方法读取一行时,阅读器将返回该文件的第一行。无论你的for循环中的数字如何。

for(int i = 0; i <= modelStartLine; i++) {
   if(i == modelStartLine) {
       info = reader.readLine();
   } else {
       reader.readLine();
   }
}

这是一行阅读的简单解决方案。

对于第一行,您不需要for循环。您可以创建阅读器并调用readLine()方法。这将返回第一行。