簡體   English   中英

簡單的Java文件閱讀器不起作用

[英]Simple java file reader not working

我正在創建一個程序,其中從一個文件( test.in )中讀取兩個數字,然后將總和輸出到另一個文件( test.out )。 我在項目的bin文件夾中將這兩個文件創建為TXT文檔,但仍然可以

Exception in thread "main" java.io.FileNotFoundException: test.in.txt (The system cannot find the file specified)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileReader.<init>(Unknown Source)
    at test.main(test.java:11)

文件沒有顯示在屏幕左側的項目目錄中,只是無法使用。

import java.io.*;
import java.util.*;

public class test {
    public static void main (String [] args) throws IOException {
        BufferedReader f = new BufferedReader(new FileReader("test.in.txt"));
        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("test.out.txt")));
        StringTokenizer st = new StringTokenizer(f.readLine());
        int i1 = Integer.parseInt(st.nextToken());    // first integer
        int i2 = Integer.parseInt(st.nextToken());    // second integer
        out.println(i1+i2);                           // output result
        out.close();                                  // close the output file
      }
}

如您所見,文件是一個文本文檔,因此即使在文件夾中看不到它,它也以“ .txt”結尾!

您必須將“ test.in”和“ test.out”更改為“ test.in.txt”和“ test.out.txt”

import java.io.*;
import java.util.*;

public class test {
    public static void main (String [] args) throws IOException {
        BufferedReader f = new BufferedReader(new FileReader("test.in.txt"));
        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("test.out.txt")));
        StringTokenizer st = new StringTokenizer(f.readLine());
        int i1 = Integer.parseInt(st.nextToken());    // first integer
        int i2 = Integer.parseInt(st.nextToken());    // second integer
        out.println(i1+i2);                           // output result
        out.close();                                  // close the output file
      }
}

如果文件為“ .txt”,則需要重命名字符串“ test.in”和“ test.out”。 另一個選項是將“ test.in.txt”更改為“ test.in”,將“ test.out.txt”更改為“ test.out”。

您的文件必須來自“ IN”和“ OUT”類型,而不是 “ TXT”類型。 如您的屏幕截圖所示,它們不是 您沒有看到后綴“ txt”的事實可能取決於您在OS上的設置。

您的文件還必須與test.java文件位於同一目錄中。

您應該檢查路徑和文件名。 如果“ test.in”文件不在您調用“ java”命令的文件夾中,則獲取此異常是正常的。

將文件放在項目的bin中不是解決方案。 這些文件應該位於項目的根目錄中。 可能還有其他一些問題,例如文件名。 嘗試按文件的絕對路徑引用文件。 例如BufferedReader f = new BufferedReader(new FileReader("C:/MyProjetFolder/bin/test.in"));

如果這不起作用,則問題可能是文件的擴展名。 因此,請檢查文件的元數據以查看擴展名是否符合預期。 如果不是,則將文件重命名為元數據(屬性)中的擴展名。

您不必將文件放在bin文件夾中。 將它們放在bin /的父文件夾中的項目文件夾中,它將起作用。

我知道這是在我發布問題之后很長時間了,但是我偶然發現了它,發現發現它不起作用的真正原因是因為“ f”輸入閱讀器從未關閉,而“ out”輸出閱讀器卻關閉了。 我只需要添加“ f.close();” 為了使它工作。 它與文本文件的名稱無關,哈哈。

這是工作代碼。

import java.io.*;
import java.util.*;

public class test {
    public static void main (String [] args) throws IOException {
        BufferedReader f = new BufferedReader(new FileReader("test.in.txt"));
        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("test.out.txt")));
        StringTokenizer st = new StringTokenizer(f.readLine());
        int i1 = Integer.parseInt(st.nextToken());    // first integer
        int i2 = Integer.parseInt(st.nextToken());    // second integer
        out.println(i1+i2); // output rresult
        f.close();
        out.close();     
        // close the output file
      }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM