我正在开发一个SC2Replay解析工具,它是在MPQLIB的基础上构建的 http://code.google.com/p/mpqlib/。不幸的是,该工具使用filechannels来读取bzip文件,并使用
注释掉 fc.map 可以让您重命名文件。
另外,从这里(Should I close the FileChannel?)得知,您无需同时关闭 filechannel 和 filestream,因为关闭其中一个将关闭另一个。我已经尝试过关闭任意一个或两个,但仍然没有效果。
在使用 Java 7 的 FileChannel.map 读取数据后,是否有绕过方法可以重命名文件?因为现在似乎每个人都在使用 Java 7。
map(MapMode.READ_ONLY, hashtablePosition, hashTableSize);
。调用该函数后关闭文件通道并没有释放进程中的文件。具体地说,我无法重命名/移动该文件。这个问题出现在Java 7中,在Java 6中可以正常工作。以下是一个简单的代码片段来复制它: FileInputStream f = new FileInputStream("test.SC2Replay");
FileChannel fc = f.getChannel();
fc.map(MapMode.READ_ONLY, 0,1);
fc.close();
new File("test.SC2Replay").renameTo(new File("test1.SC2Replay"));
注释掉 fc.map 可以让您重命名文件。
另外,从这里(Should I close the FileChannel?)得知,您无需同时关闭 filechannel 和 filestream,因为关闭其中一个将关闭另一个。我已经尝试过关闭任意一个或两个,但仍然没有效果。
在使用 Java 7 的 FileChannel.map 读取数据后,是否有绕过方法可以重命名文件?因为现在似乎每个人都在使用 Java 7。