2016-07-28 53 views
0

我有數據,這樣要打印根據數據在文本文件中

username=Ayyappa,password=123 
username=venkata,password=456 
username=Bhargav,password=789 
username=Rama,password=158 
username=Pusarla,password=968 

我想在行號2 打印數據的文本文件,以行(我的預期輸出爲用戶名=文卡塔,密碼= 456)

Funtion寫成:

public class TestDataReader { 
public static String getrowvalue(String FileName, int rownum) throws IOException{ 

     FileReader fr = new FileReader(FileName); 
     BufferedReader br = new BufferedReader(fr); 
     String lineString = null; 
     while((lineString = br.readLine())!= null){ 
      int counter = 1; 
      if(counter == rownum){ 
       System.out.println(lineString); 
       counter ++; 
      } 
     } 

     return lineString; 
    } 

} 

我在另一個類中調用此函數

TestDataReader.getrowvalue(「F:\ WS_Finsys_Ayyappa \ Ejagruti \ TestData \ login.txt」,2);

,但是當我打電話這種功能,它在打印所有的行數據,但不能與行數據我在這種情況下,我通過了ROWNUM 2中得到的行數據

回答

0

你的錯誤傳遞是在這裏:你只需沖洗在每次循環counter值:

int counter = 1; 

所以將其更改爲:

int counter = 1; 
while((lineString = br.readLine())!= null){ 
     if(counter == rownum){ 
      System.out.println(lineString); 
     } 
     counter++; 
    } 

UPD:另外,正如@Lemm Ras提到的那樣,您必須在if語句之外移動counter增量。

+1

此外,計數器應該在_if_條件之外遞增,否則它將不會/錯誤地更新。 –

+1

我認爲字符串「lineString」也應該儘快按照方法'getrowvalue'的方法等於rownum返回 –

+0

非常感謝你,它爲我工作,對不起,我不能認爲這個小錯誤 –

0

的Java 8解決方案:

對於小文件:

String line32 = Files.readAllLines(Paths.get("file.txt")).get(32) 

對於大文件:

try (Stream<String> lines = Files.lines(Paths.get("file.txt"))) { 
    line32 = lines.skip(31).findFirst().get(); 
} 

下一個簡單,Java的< 8解決方案:

public String readLine(int line){ 
     FileReader tempFileReader = null; 
     BufferedReader tempBufferedReader = null; 
     try { tempFileReader = new FileReader(textFile); 
     tempBufferedReader = new BufferedReader(tempFileReader); 
     } catch (Exception e) { } 
     String returnStr = "ERROR"; 
     for(int i = 0; i < line - 1; i++){ 
      try { tempBufferedReader.readLine(); } catch (Exception e) { } 
     } 
     try { returnStr = tempBufferedReader.readLine(); } catch (Exception e) { } 

     return returnStr; 
    } 
+0

The 「大型」解決方案也許將整個文件讀入RAM –

相關問題