java文件输入输出遇到的一些坑

博主在学习Java核心技术时遇到了文件I/O的问题,分享了使用Scanner和PrintWriter进行文件读写时遇到的难点。对于Scanner,推荐使用绝对路径,并确保文件后缀名正确。PrintWriter的使用中,遇到无法写入文件的问题,通过添加`flush()`和`close()`方法解决了问题。博主希望有I/O经验的人能提供进一步指导。

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

这几天学习java核心技术时碰见了这个文件I/O,看着比较简单就用eclipse试了一下,试一下才发现坑很多,而且有的坑也不知道是什么,简单记录一下。

先放一下最后成功的代码。

public static void main(String[] args)throws IOException {
		// TODO Auto-generated method stub

		Scanner cin=new Scanner(Path.of("f:\\test.txt"),StandardCharsets.UTF_8);
		PrintWriter cout=new PrintWriter("f:\\key.txt",StandardCharsets.UTF_8);
		int a=cin.nextInt();
		int b=cin.nextInt();
		cout.println( (a+b));
		cout.flush();
		cout.close();
		
	}

首先关于Scanner的输入,Path of中的文件路径推荐写绝对地址,就是类似我写的这样,还有最后文件的后缀名一定要加,否则就会找不到这个文件接着抛异常,另外文件路径中可以有汉字,这个不影响。
总的来说Scanner的问题不大。

相比而言PrintWriter就麻烦很多,首先我想从test文件中读入两个整数然后将两个整数的和输出到test文件,我试了很久都不行,一直在抛异常,这样一运行我的test文件中的字符就会消失,我也不知道为什么。

接着我换了一个key文件,想输出到key文件中,但是发现还是不行,依然没有输出,后来看别人的代码加了一句cout.close();,于是我就照着做了,紧接着就可以在key中正常输出了,这个我也不知道为什么。

总之java文件I/O真的好麻烦…如果有路过的明白I/O的大佬,求指教!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值