使用 FileInputStream 的有效文件的 FileNotFoundException
FileNotFoundException for a valid file using FileInputStream
当我写 FileInputStream
时,虽然我有有效的文件,但它会抛出 FileNotFoundException。
我用过这个:
package io;
import java.io.*;
public class implementIo {
public static int i;
public static FileOutputStream output;
public static FileInputStream input;
public static void main(String args[]) {
try {
output = new FileOutputStream("writeModification.txt");
input = new FileInputStream("modification.txt");
do {
i = input.read();
if(i != -1) output.write(i);
}while(i != -1);
} catch (Exception e) {
System.out.println("Exception caught " + e);
} finally {
try {
if(output == null) input.close();
}catch(IOException e) {
System.out.println("IOException caught: " + e);
}
}
}
}
虽然我在同一个包文件夹中有两个单独的文件,分别名为 "modification.txt" 和 "printModification.txt",然而系统抛出一个FileNotFoundException
。请帮忙!
这是因为 FileInputStream 不像 new FileOutputStream()
那样在初始化期间提供文件创建。所以如果已经说了这些,我们可以看到一件有趣的事情要记住:每次初始化 FileOutputStream
时都会创建 modification.txt (并且不会被覆盖),这就是为什么您的代码很可能在 new FileInputStream()
行中断的原因。
你如何处理你的异常?
您可以在执行代码之前创建文件(手动使用 New
-> Text Document
等)或修改代码并使用 File
class :
File file = new File("modification.txt");
try {
file.createNewFile();
input = new FileInputStream(file);
//your code here - output etc.
即使您在同一个包文件夹中创建了文件,您的代码仍然无法正常工作?这是因为您的流查找文件的默认路径是当前工作目录。这是一个例子:
myproject
|___src
| |___main
| |___java
| |___io
| |___implementIo
|___writeModification.txt
|___modification.txt
如果您想像以前一样使用流(在流构造函数参数中只使用一个简单的文件名),那么这是正确的结构。但是如果你的文件不在那里,你必须指定绝对路径。这是一个例子:
myproject
|___src
|___main
|___java
|___io
|___implementIo
|___writeModification.txt
|___modification.txt
访问文件的正确方法是:
FileInputStream input = new FileInputStream("C://myproject//src//main//java//io//modification.txt");
输出流也一样。 (请用正确的文件位置修改路径)
当我写 FileInputStream
时,虽然我有有效的文件,但它会抛出 FileNotFoundException。
我用过这个:
package io;
import java.io.*;
public class implementIo {
public static int i;
public static FileOutputStream output;
public static FileInputStream input;
public static void main(String args[]) {
try {
output = new FileOutputStream("writeModification.txt");
input = new FileInputStream("modification.txt");
do {
i = input.read();
if(i != -1) output.write(i);
}while(i != -1);
} catch (Exception e) {
System.out.println("Exception caught " + e);
} finally {
try {
if(output == null) input.close();
}catch(IOException e) {
System.out.println("IOException caught: " + e);
}
}
}
}
虽然我在同一个包文件夹中有两个单独的文件,分别名为 "modification.txt" 和 "printModification.txt",然而系统抛出一个FileNotFoundException
。请帮忙!
这是因为 FileInputStream 不像 new FileOutputStream()
那样在初始化期间提供文件创建。所以如果已经说了这些,我们可以看到一件有趣的事情要记住:每次初始化 FileOutputStream
时都会创建 modification.txt (并且不会被覆盖),这就是为什么您的代码很可能在 new FileInputStream()
行中断的原因。
你如何处理你的异常?
您可以在执行代码之前创建文件(手动使用 New
-> Text Document
等)或修改代码并使用 File
class :
File file = new File("modification.txt");
try {
file.createNewFile();
input = new FileInputStream(file);
//your code here - output etc.
即使您在同一个包文件夹中创建了文件,您的代码仍然无法正常工作?这是因为您的流查找文件的默认路径是当前工作目录。这是一个例子:
myproject
|___src
| |___main
| |___java
| |___io
| |___implementIo
|___writeModification.txt
|___modification.txt
如果您想像以前一样使用流(在流构造函数参数中只使用一个简单的文件名),那么这是正确的结构。但是如果你的文件不在那里,你必须指定绝对路径。这是一个例子:
myproject
|___src
|___main
|___java
|___io
|___implementIo
|___writeModification.txt
|___modification.txt
访问文件的正确方法是:
FileInputStream input = new FileInputStream("C://myproject//src//main//java//io//modification.txt");
输出流也一样。 (请用正确的文件位置修改路径)