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