在Windows中发布Java文件锁
我在 Windows中使用java删除文件有一些问题.由于某种原因,java正在锁定我的文件,我不知道为什么.这是我的代码: private byte[] getFileByteArray(File file) { try { RandomAccessFile raf = new RandomAccessFile(file,"r"); FileChannel channel = raf.getChannel(); try { ByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY,channel.size()); byte[] bt = new byte[buffer.remaining()]; buffer.get(bt); channel.close(); raf.close(); file.delete(); return bt; } catch (Exception ex) { //Logger.getLogger(ConnectionImpl.class.getName()).log(Level.SEVERE,null,ex); System.out.println(ex.toString()); } } catch (FileNotFoundException ex) { Logger.getLogger(ConnectionImpl.class.getName()).log(Level.SEVERE,ex); } return null; } file.delete()以及在资源管理器中手动尝试拒绝删除文件,因为它仍在使用中.在Linux中似乎都很好. 我错过了()somehwhere吗?我可以确认首先使文件的方法是关闭文件,因为我可以使用file.delete()运行上述代码之前删除该文件, 额外信息:上面的代码是一个名为getFileByteArray(File file)的方法的一部分,正在被调用: public byte[] createReport(int id) { Report report = new Report(); String filename = report.CreateReport(id); return getFileByteArray(new File(filename)); } 谢谢 更新:我设法通过使用ByteArrayOutputStream读取千字节千字节到字节数组中来解决这个问题 作为下面提到的海报,Java中有一个已知的错误,因为Windows有文件映射问题. 这是一个已知的Java在Windows上的Bug,请参阅 Bug #4715154Sun评估了这个问题,并通过以下解释来关闭了这个bug:
(编辑:滁州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 自动更新 – 服务器2016 – 更新重新启动
- 开始使用CryptPad吧,一个开源的协作文档编辑器
- windows-server-2008-r2 – DFSR Backlog卡在不存在的文件夹
- 微软声称Windows 11有很多更进,对开发人员的体验有所改善吗
- Linux系统日常管理--监控系统的状态+排查是否正被攻击
- Windows下良心软件强力推荐
- Windows 10 怎样修改注册表
- 如何在Ubuntu LTS系统上启用Canonical的内核实时补丁服务
- 修复Windows 10上的mfewfpk.sys,Epfwwfp.sys蓝屏错误
- windows – 如果DHCP服务器在客户端设备之后联机,会发生什么