gpt4 book ai didi

Java:Javolution:如何使用 UTF8ByteBufferWriter 和 MappedByteBuffer?

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:07 25 4
gpt4 key购买 nike

对于任何使用 javolution 的人,请指导我如何使用它。任何片段代码都对我有很大帮助。

这是我当前的代码:

public static void mergeAllFilesJavolution2()throws FileNotFoundException, IOException {
String fileDir = "C:\\TestData\\w12";
File dirSrc = new File(fileDir);
File[] list = dirSrc.listFiles();
long start = System.currentTimeMillis();

String outFile = fileDir + "\\..\\merged.txt";
File file2 = new File(outFile);
//file2.createNewFile();
FileChannel fc2 = (new RandomAccessFile(file2, "rw")).getChannel();

for(int j=0; j<list.length; j++){
int chr;
String srcFile = list[j].getPath();

File file = new File(srcFile);
FileChannel fc = (new FileInputStream(file)).getChannel();
MappedByteBuffer buf = fc.map(MapMode.READ_ONLY, 0, file.length());
UTF8ByteBufferReader inFile= new UTF8ByteBufferReader().setInput(buf);

MappedByteBuffer buf2 = fc2.map(MapMode.READ_WRITE, file2.length(), file.length());
UTF8ByteBufferWriter outPut= new UTF8ByteBufferWriter().setOutput(buf2);

while((chr=inFile.read()) != -1) {
outPut.write(chr);
}
outPut.close();
inFile.close();
}
System.out.println(System.currentTimeMillis()-start);
}

但这给了我一个异常(exception):

Exception in thread "main" java.nio.channels.NonReadableChannelException at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:716) at abc.filedivision.FileMergeTest.mergeAllFilesJavolution2(FileMergeTest.java:100) at abc.filedivision.FileMergeTest.main(FileMergeTest.java:27)

任何关于正确方向的指导都值得赞赏。

最佳答案

我的猜测是它在这里提示(这就是为什么查看有错误的代码行很重要)

FileChannel fc2 = (new FileOutputStream(file2, true)).getChannel(); 
MappedByteBuffer buf2 = fc2.map(MapMode.READ_WRITE, 0, file2.length());

如果尝试使用 channel 读取但 channel 不可读,则会抛出此异常。

如果您在“rw”、“rws”或“rwd”模式下使用 RandomAccessFile,则只能在 READ_WRITE 模式下打开 channel

关于Java:Javolution:如何使用 UTF8ByteBufferWriter 和 MappedByteBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6384641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com