我需要编写一个自定义批处理文件重命名器.我已经完成了大部分工作,除了我无法弄清楚如何检查文件是否已经打开.我只是使用该java.io.File包,并且有一个canWrite()方法,但似乎不测试该文件是否被另一个程序使用.关于如何使这项工作的任何想法?
当您在同一个文件上同时打开两个(或更多)FileOutputStream时会发生什么?
在Java的API这样说:
特别是某些平台允许一次只打开一个FileOutputStream(或其他文件写入对象)来写文件.
我猜Windows不是这样的平台,因为我有两个线程读取一些大文件(每个都是不同的文件),然后将其写入相同的输出文件.抛出没有异常,文件被创建并且似乎包含来自两个输入文件的块.
附带问题:
我有一个Java应用程序,它监视传入XML文件的文件夹.检测到新文件时,我需要测试文件当前未更新并关闭.我的想法是使用File.canWrite()来测试它.这样做有什么问题吗?这是测试文件是否已完全写入的好方法吗?
我投掷的其他想法是:
我只是不确定这些方法中的任何一种都能处理所有场景.