[英]Using BufferedReader to read Text File
我在使用 BufferedReader 時遇到問題
我想打印一個文本文件的 6 行:
public class Reader {
public static void main(String[]args) throws IOException{
FileReader in = new FileReader("C:/test.txt");
BufferedReader br = new BufferedReader(in);
while (br.readLine() != null) {
System.out.println(br.readLine());
}
in.close();
}
現在,從我每次調用 readLine() 方法時可以收集到的信息,它會自動前進到下一行。
所以我不能使用條件 br.readLine() != null 因為它已經將它推進一行並且我得到輸出:
Line 2
Line 4
Line 6
我使用什么條件來檢查文本字段中是否還有新行。
提前致謝!
這就是問題:
while (br.readLine() != null) {
System.out.println(br.readLine());
}
您有兩次對readLine
調用 - 第一次只檢查是否有一行(但讀取並丟棄它),第二次讀取下一行。 你要:
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
現在我們只在每次循環迭代中調用readLine()
一次,並使用我們讀過的那一行來表示“我們完成了嗎?” 和“打印出線”部分。
您通過while
循環閱讀line
並通過循環閱讀下一行,因此只需在 while 循環中閱讀它
String s;
while ((s=br.readLine()) != null) {
System.out.println(s);
}
您可以將br.readLine()
的結果分配給一個變量,並將其用於處理和檢查,如下所示:
String line = br.readLine();
while (line != null) { // You might also want to check for empty?
System.out.println(line);
line = br.readLine();
}
private void readFile() throws Exception {
AsynchronousFileChannel input=AsynchronousFileChannel.open(Paths.get("E:/dicom_server_storage/abc.txt"),StandardOpenOption.READ);
ByteBuffer buffer=ByteBuffer.allocate(1024);
input.read(buffer,0,null,new CompletionHandler<Integer,Void>(){
@Override public void completed( Integer result, Void attachment){
System.out.println("Done reading the file.");
}
@Override public void failed( Throwable exc, Void attachment){
System.err.println("An error occured:" + exc.getMessage());
}
}
);
System.out.println("This thread keeps on running");
Thread.sleep(100);
}
對資源使用 try。 這將自動關閉資源。
try (BufferedReader br = new BufferedReader(new FileReader("C:/test.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
}
也許你的意思是:
public class Reader {
public static void main(String[]args) throws IOException{
FileReader in = new FileReader("C:/test.txt");
BufferedReader br = new BufferedReader(in);
String line = br.readLine();
while (line!=null) {
System.out.println(line);
line = br.readLine();
}
in.close();
}
嘗試:
String text= br.readLine();
while (text != null)
{
System.out.println(text);
text=br.readLine();
}
in.close();
要么
public String getFileStream(final String inputFile) {
String result = "";
Scanner s = null;
try {
s = new Scanner(new BufferedReader(new FileReader(inputFile)));
while (s.hasNext()) {
result = result + s.nextLine();
}
} catch (final IOException ex) {
ex.printStackTrace();
} finally {
if (s != null) {
s.close();
}
}
return result;
}
這也是第一行。
你可以將它存儲在數組中,然后使用你想要的任何一行..這是我用來從文件中讀取行並將其存儲在字符串數組中的代碼片段,希望這對你有用:)
public class user {
public static void main(String x[]) throws IOException{
BufferedReader b=new BufferedReader(new FileReader("<path to file>"));
String[] user=new String[30];
String line="";
while ((line = b.readLine()) != null) {
user[i]=line;
System.out.println(user[1]);
i++;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.