Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用通道和缓冲区(java.nio)来读/写我在文件中创建的对象类型?_Java - Fatal编程技术网

是否可以使用通道和缓冲区(java.nio)来读/写我在文件中创建的对象类型?

是否可以使用通道和缓冲区(java.nio)来读/写我在文件中创建的对象类型?,java,Java,我想知道是否可以使用通道和缓冲区(来自java.nio)来读/写我从文件创建的对象类型 例如,这里有一个代码示例(不使用“finally”或更好地尝试使用Resources,也不关闭文件,因为它不是代码的一部分,只是一个示例来说明我为什么要问这个问题) 当我执行这段代码时(test.txt是一个4 Mo文件),我可以看到第二个方法的执行时间比第一个方法快10倍左右。 在这个例子中,它是用字节缓冲区完成的,但是你可以用任何类型的原语类型(IntBuffer,CharBuffer,…) 是否也可以对

我想知道是否可以使用通道和缓冲区(来自java.nio)来读/写我从文件创建的对象类型

例如,这里有一个代码示例(不使用“finally”或更好地尝试使用Resources,也不关闭文件,因为它不是代码的一部分,只是一个示例来说明我为什么要问这个问题)

当我执行这段代码时(test.txt是一个4 Mo文件),我可以看到第二个方法的执行时间比第一个方法快10倍左右。 在这个例子中,它是用字节缓冲区完成的,但是你可以用任何类型的原语类型(IntBuffer,CharBuffer,…)

是否也可以对我创建的对象类型使用第二种方法(使用java.nio Buffer)?或者我应该使用第一种方法(使用BufferedOutStream)处理它,如:

 ObjectInputStream ois = new ObjectInputStream(
                             new BufferedInputStream(
                                 new FileInputStream(
                                     new File("test.txt"))));
  • 您的基准测试无效,因为它只在第二种情况下测试一个已启动的缓存。尝试使用两个不同的文件,或按其他顺序。你不会得到同样的结果
  • 在任何情况下,你的测试都不具有可比性。在第一种情况下,您应该计时的是
    bis.read(byte[])
    到与第二种情况下相同大小的缓冲区中
  • 当你运行有效的测试时,你会发现即使有任何区别,也几乎没有什么区别,因此你的问题没有动机。按照第一个示例使用
    BufferedInputStream

     ObjectInputStream ois = new ObjectInputStream(
                                 new BufferedInputStream(
                                     new FileInputStream(
                                         new File("test.txt"))));