我的代码正在抛出FileNotFound异常,即使我在我说明的确切目录中有该文件。我也试过...new File("euler8.txt");...
但没有成功。我的代码如下:
private static void euler8() throws IOException
{
int current;
int largest=0;
int c =0;
ArrayList<Integer> bar = new ArrayList<Integer>(0);
File infile = new File("C:/Users/xxxxxxxx/workspace/Euler1/euler8.txt");
BufferedReader reader = new BufferedReader(
new InputStreamReader(
new FileInputStream(infile),
Charset.forName("UTF-8")));
try
{
while((c = reader.read()) != -1)
{
bar.add(c);
}
}
finally{reader.close();}
for(int i=0; i<bar.size(); i++)
{
current = bar.get(i) * bar.get(i+1) * bar.get(i+2) * bar.get(i+3) * bar.get(i+4);
if(largest<current)
largest = current;
}
}
它在做什么的图像:
答案 0 :(得分:4)
除了已建议的所有其他内容之外,您可以检查是否存在此问题(我们在实验室中已经看到过):扩展名为两倍的文件。换句话说,请确保您的euler8.txt
真的被称为euler8.txt.txt
,而不是{{1}},因为,使用隐藏的扩展名,文件资源管理器会显示第一个,但最初可能不会让您感到奇怪,如果你不记得它应该隐藏扩展名。
答案 1 :(得分:2)
正斜杠工作正常,因为它们适用于任何平台(相对路径优于绝对路径),因此是首选。确保您的路径按指定存在,并验证您对通向该文件的目录具有读访问权限。例如,如果您以不同的用户身份运行java程序,则可能没有“myuser”文件夹的读取权限。
答案 2 :(得分:1)
如果所有目录都不存在,此代码将无效,因此我假设(希望我是正确的)您有拼写错误或缺少文件夹。
我通常更喜欢对父目录进行java.io.File
引用,然后在后续文件引用中将其用作父对象,即:
File dir = new File("parentDir");
File inFile = new File(dir, "fileName");
此外,java.io.File
有exists()
方法返回true或false,其后续mkdir()
,mkdirs()
和createNewFile()
返回true或false他们实际创建了所请求的文件。
那就是说,我将你的代码修改为以下内容,并在我的机器上执行;但我不知道你试图通过这个数据运行什么数据。
int current;
int largest = 0;
int c = 0;
ArrayList<Integer> bar = new ArrayList<Integer>(0);
File dir = new File("C:/Users/myuser/workspace/Euler1");
if(!dir.exists()){
dir.mkdirs();
}
File infile = new File(dir, "euler8.txt");
if(!infile.exists()){
infile.createNewFile();
}
BufferedReader reader = new BufferedReader(
new InputStreamReader(
new FileInputStream(infile),
Charset.forName("UTF-8")));
try {
while ((c = reader.read()) != -1) {
bar.add(c);
}
} finally {
reader.close();
}
for (int i = 0; i < bar.size(); i++) {
current = bar.get(i) * bar.get(i + 1) * bar.get(i + 2) * bar.get(i + 3) * bar.get(i + 4);
if (largest < current) {
largest = current;
}
}
答案 3 :(得分:0)
反斜杠是非常不必要的。我跑了这个程序:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
public class Test {
public static void main(String[] args) throws IOException {
File infile = new File("C:/Users/pats/workspace/test/euler8.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(infile), Charset.forName("UTF-8")));
try {
String s;
while ((s = reader.readLine()) != null) {
System.out.println(s);
}
} finally {
reader.close();
}
}
}
非常相似,它打印了我文件的内容。
我认为你需要检查文件是否存在,以及你是否有权访问它。