使用文件输入输出流遇到的坑

1.今天使用文件输入输出流当向磁盘中第一次插入文件中时成功了。当我向磁盘同样的路径中插入相同的文件时,报错如下:

java.io.FileNotFoundException: /2021-03-18/xxl123.RTCM (权限不够)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at com.cc21.postgrid.server.PostGridGreeterService.gridEncodePostRTCM(PostGridGreeterService.java:312)
	at com.cc21.service.rpc.lib.PostGridGreeterGrpc$MethodHandlers.invoke(PostGridGreeterGrpc.java:438)
	at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:171)
	at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:283)
	at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:707)
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

仔细想了一下,是由于文件流使用完毕之后没有关闭,使得文件被流锁住了,下次插入新的文件的时候,要去删除旧的文件,这个时候是没办法删除的,你去手动删除的时候也删除不了,因为该文件和程序的流还绑定着。在程序用完流后将流关闭即可:

finally
        {
            if (fis != null)
            {
                try
                {
                    fis.close();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                    System.out.println("关闭输出流失败");
                }
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值