java.io.FileNotFoundException: (系统找不到指定的路径。)怎么处理

2024年11月20日 04:34
有5个网友回答
网友(1):

1、造成java.io.FileNotFoundException异常的原因为:通过io流根据给定路径调用文件时,发现文件不存在。

2、解决办法为:将想要通过io流调用的文件放置到编写程序时给出的对应路径下;或者找到文件,在编写程序时修改io流路径为文件的实际路径。

拓展:

1、Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

2、Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为Java,并重新设计用于开发Internet应用程序。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态Web、Internet计算。

网友(2):

Java.io.FileNotFoundException是Java错误中比较常见的一种。该错误是一种IO Exception,或者输入/出错误,其出现原因主要是未在指定文件夹内找到所需的文件。

一般导致该错误出现的原因有以下三个:

1、目标文件不存在

解决方式:将所需文件移动到指定路径中。如果未设置路径,默认为java项目路径

2、你指定的目标不是文件,而是一个文件路径

解决方式:记得在路径后加入文件。如“%windir/System32/cmd.exe”

3、你指定的文件由于某种原因无法读取

解决方式:可以先使用方法file.canRead();进行验证。如果认证结果为false,试试将文件转换成可读的格式。如果为true,请检查第一和第二项

希望我的回答有所帮助。

网友(3):

java.io.FileNotFoundException :当试图打开指定路径名表示的文件失败时,抛出此异常。不同的产生原因有不同的解决方案, 所以需要先分析异常产生的原因:  

异常产生的原因:

1、该文件不存在. 那么IO操作就会抛出该异常

2、如果该文件存在,但是由于某些原因不可访问,比如试图打开一个只读文件进行写入,则此时这些构造方法仍然会抛出该异常。

3、WIN10系统,直接向系统盘C盘的根目录,直接写入文件,那么也会抛出该异常.

处理异常的方案:

1、文件不存在时, 检查路径名填写错误,然后进行修改,或者创建出来. 

2、文件存在时, 我们需要检查该文件是否正在被修改占用, 或者该文件的属性是否是只读. 如果正在被修改占用,我们需要关闭其他占用该文档的应用.如果文件属性是只读,那么我们需要取消文档的只读属性

3、在WIN10系统,不要向系统盘C盘,直接创建文件, 需要先创建目录.然后写入文件

参考示范: 

import java.io.File;
import java.io.IOException;

public class FileTest {

public static void main(String[] args) {
//不同的操作系统,那么有不同的文件目录分隔符 ,所以建议不要直接写成"\\". 而应该使用File.separator 该字段 来获取
String sp = File.separator;//获取名称分隔符
File file = new File("d:" + sp + "book" + sp + "story.txt");

if (!file.getParentFile().exists()) {// 如果book文件夹不存在
file.getParentFile().mkdir();// 创建book文件夹
}

if (!file.exists()) {// 如果story.txt文件不存在
try {
file.createNewFile();// 创建story.txt
} catch (IOException e) { // 捕获异常并处理
e.printStackTrace();
}
}

}
}

拓展:  实际情况中,很多时候,文件夹存在,我们的重点是判断文件是否存在,且不存在,就创建. 有些输出流,就可以在文件不存在时,自动创建该文件. 比如FileOutputStream ,FileWriter ...

	FileWriter fw = new FileWriter("d:\\菜单.txt");//注意 win10,不支持向c盘根目录写入文件
fw.close();

总结:  Java的异常处理机制是比较完善的, 除开通过推理逻辑, 避开一些异常, 更重要的是在运行中发生可以处理的异常时, 巧妙使用try catch 代码处理 .这样的程序才会更加的稳健

网友(4):

  1. 可以上代码吗?

  2. 这个异常是Java常见的IO异常,这个异常导致的是文件路径找不到。

  3. 通常你可以使用try{}catch(FileNotFoundException e){……}来捕获异常。

  4. 可以找到具体的文件进行读取,而不是到文件夹。

  5. 也可以判断路径是否存在,如果不存在则mkdir.

  6. 最后给你个例子

  7.  public static boolean createDir(String destDirName) {  
            File dir = new File(destDirName);  
            if (dir.exists()) {  
                System.out.println("创建目录" + destDirName + "失败,目标目录已经存在");  
                return false;  
            }  
            if (!destDirName.endsWith(File.separator)) {  
                destDirName = destDirName + File.separator;  
            }  
            //创建目录  
            if (dir.mkdirs()) {  
                System.out.println("创建目录" + destDirName + "成功!");  
                return true;  
            } else {  
                System.out.println("创建目录" + destDirName + "失败!");  
                return false;  
            }

网友(5):

路径里面有中文哈
public class fileWrite {
public static void main(String[] args) {
File file = new File("D:/from.txt");
File file2 = new File("D:/to.txt");
BufferedReader reader = null;
BufferedWriter writer = null;
try {
System.out.println("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
writer = new BufferedWriter(new FileWriter(file2));
String tempString = null;
int line = 1;
int notBlankLine = 0;
int blankLine = 0;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
// 显示行号
System.out.println("line " + line + ": " + tempString);
line++;
if(StringUtils.isNotEmpty(tempString)){//空行不写
if(notBlankLine > 0) writer.newLine();
writer.write(tempString);
notBlankLine ++;
blankLine = 0;
}else{//换行符
if(blankLine == 0) writer.newLine();
blankLine++;
notBlankLine = 0;
}
}
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
if (writer != null) {
try {
writer.close();
} catch (IOException e1) {
}
}
}
}
}