我有一个像这样的数据的文本文件
username=Ayyappa,password=123
username=venkata,password=456
username=Bhargav,password=789
username=Rama,password=158
username=Pusarla,password=968
我想打印第2行的数据 (我的预期输出是用户名= venkata,密码= 456)
写的功能:
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 :(得分:0)
你的错误在于:每次循环时只需刷新counter
值:
int counter = 1;
所以改成它:
int counter = 1;
while((lineString = br.readLine())!= null){
if(counter == rownum){
System.out.println(lineString);
}
counter++;
}
UPD :另外,正如@Lemm Ras所提到的,您必须在counter
语句之外移动if
增量。
答案 1 :(得分: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&lt; 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;
}