FileInputStream中的java.io.FileNotFoundException异常

本文详细记录了一位开发者在使用Java FileInputStream读取文件时遇到的FileNotFoundException异常。问题源于复制文件路径时产生的隐形Unicode字符‪,该字符导致文件找不到。经过排查,发现删除该隐形字符即可解决问题。此案例提醒程序员注意复制粘贴路径时可能出现的不可见字符,确保路径正确无误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、报错直接原因

在读取文件时,用FileInputStream以字节的形式读取。代码如下

package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInputStreamTest01 {
	public static void main(String[] args) {
		FileInputStream fis = null;
		try {
			fis = new FileInputStream("‪D:\\1.txt");
			int readData = fis.read();
			System.out.println(readData);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			try {
				fis.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}	
	}
}

基本上用Eclipse自动补齐代码,但是一直显示异常,具体如下,

 这个时候,我检查了自己测试的这个文件名字,完全一样,找不到错误啊,我把这行隐掉,手动写了一遍,竟然通过了???

我先去网上直接搜这个异常,但是看了很多,没有发现问题,后面看到有大佬解答说是渎职的错误。我又测试了一下,具体问题是因为我在复制路径时出错了

 

 

二、具体原因---”\u202A“

理论上复制是一样的,为什么会这样哪?我在IDEA中测试了一下,发现错误的复制,会在路径前面自动添加\u202A。搞了半天是这个时候复制,多了一个这个,我又在eclipse中的D前面按了一次Backspace,竟然真的删除了一个没显示的东西。

 那么\u202A是什么哪?网上给出了解释:我们在从后往前复制路径时,虽然最终得到的复制都一样,但是对于计算机来说,他是从前往后去找路径的。所以对于这种复制方式,会自动加\u202A,主要是为了电脑按照从前往后的路径找文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值