如何从java中的文本文件中读取单行。 知道线路完成的标准是什么。
其次
我读取文件然后读取行功能并将其转换为字符串将跳过大量数据?应该是什么问题? 这是我的代码
String data = new String();
while(infile.readLine() != null) {
data = infile.readLine();
System.out.println(data);
}
答案 0 :(得分:2)
按如下方式更改您的代码
while((data = infile.readLine()) != null) { // read and store only line
System.out.println(data);
}
在您当前的代码中
while(infile.readLine() != null) { // here you are reading one and only line
data = infile.readLine(); // there is no more line to read
System.out.println(data);
}
答案 1 :(得分:1)
您正在阅读额外的一行,因为第一个readLine()
作为while
条件会读取一行,但它会被使用。 readLine()
循环中的第二个while
读取您分配给data
并打印的第二行。
因此,您需要将while
条件下读取的行分配给data
并打印出来,因为这是第一行。
while((data = infile.readLine()) != null) { // reads the first line
// data = infile.readLine(); // Not needed, as it reads the second line
System.out.println(data); // print the first line
}
此外,由于您只需阅读第一行,因此根本不需要while
。一个简单的if
就行了。
if((data = infile.readLine()) != null) { // reads the first line
System.out.println(data); // print the first line
}
使用BufferedReader
以及您在评论中发布的代码,您的主文件现在应该是这样的。
public static void main(String[] args) {
try {
FileInputStream fstream = new FileInputStream(args[0]);
BufferedReader infile = new BufferedReader(new InputStreamReader(
fstream));
String data = new String();
while ((data = infile.readLine()) != null) { // use if for reading just 1 line
System.out.println(data);
}
} catch (IOException e) {
// Error
}
}
答案 2 :(得分:0)
首先:readLine()
仅返回String值,因此它不会转换为String。
第二件事:在你的while循环中,你读取第一行并检查第一行的内容是否为空。但是当data = infile.readLine();
执行时,它将从文件中获取第二行并将其打印到控制台。
将您的while循环更改为:
while((data = infile.readLine()) != null){
System.out.println(data);
}
如果您使用toString()
方法,则会在尝试使用toString
方法并从null
读取infile
内容时抛出NPE。