简单的java文件阅读器不工作

时间:2016-08-07 19:33:22

标签: java

我正在创建一个程序,其中从一个文件( 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
      }
}

6 个答案:

答案 0 :(得分:3)

正如您所看到的,您的文件是文本文档,因此即使您无法在文件夹中看到它,也会以“.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
      }
}

答案 1 :(得分:2)

如果您的文件是“.txt”,则需要重命名字符串“test.in”和“test.out”。 另一种选择是将“test.in.txt”更改为“test.in”和 “test.out.txt”改为“test.out”。

您的文件必须来自“IN”类型和“OUT”“TXT”。正如您的屏幕截图所示,他们。 您没有看到后缀“txt”这一事实可能取决于您在操作系统上的设置。

您的文件也必须与test.java文件位于同一目录中。

答案 2 :(得分:0)

您应该检查您的路径和文件名。如果“test.in”文件不在您调用“java”命令的文件夹中,则获取此异常是正常的。

答案 3 :(得分:0)

将文件放在项目的bin中不是解决方案。这些文件应该位于项目的根目录中。可能还有一些其他问题,例如文件名;尝试按绝对路径引用文件。例如。 BufferedReader f = new BufferedReader(new FileReader("C:/MyProjetFolder/bin/test.in"));

如果这不起作用,那么问题可能是文件的扩展。因此,请检查文件的元数据,以查看扩展是否符合预期。如果不是,则将文件重命名为元数据(属性)中的扩展名。

答案 4 :(得分:0)

您不必将文件放在bin文件夹中。将它们放在你的项目文件夹中,bin /的父项就可以了。

答案 5 :(得分:0)

我知道这是在我发布问题后的很长一段时间,但我偶然发现它并发现它不起作用的真正原因是因为&#34; f&#34; &#34; out&#34;输入读卡器永远不会关闭输出阅读器已关闭。我只需要添加&#34; f.close();&#34;为了使它工作。它与文本文件的名称无关,大声笑。

这是工作代码。

counter=0
while IFS="|" read -ra arr; do
    printf '%s %s\n' "$counter" "${arr[5]}"
    counter=$((counter + 1))
done < file