Java 将整个文件复制到内存,而不是进行多个磁盘访问
我正在编写一个java程序,在这里我对文件进行加密和解密。我把文件基本上看作字节数组——取N个字节,加密并写入新文件,重复。同样,在解密时 为此,我当前正在将整个文件复制到字节数组中:Java 将整个文件复制到内存,而不是进行多个磁盘访问,java,android,encryption,file-io,Java,Android,Encryption,File Io,我正在编写一个java程序,在这里我对文件进行加密和解密。我把文件基本上看作字节数组——取N个字节,加密并写入新文件,重复。同样,在解密时 为此,我当前正在将整个文件复制到字节数组中: byte[]fileAsBytes=Files.readAllBytes(path.get(pathToFile)) 但是,对于较大的文件,我会耗尽堆空间。(我知道我可以增加JVM的可用内存,但这只是回避了这个问题。此外,我还必须在内存更为有限的Android手机上运行此功能) 所以,我考虑一次只从磁盘读取N个字
byte[]fileAsBytes=Files.readAllBytes(path.get(pathToFile))
但是,对于较大的文件,我会耗尽堆空间。(我知道我可以增加JVM的可用内存,但这只是回避了这个问题。此外,我还必须在内存更为有限的Android手机上运行此功能)
所以,我考虑一次只从磁盘读取N个字节,而不是复制所有字节然后从内存中读取它们
我的问题是——什么是最好的方法?我不需要随机访问,因为我将按顺序读取文件。此外,我看到的经济放缓程度有多大?因为根据我的研究,硬盘访问比内存访问慢得多 你别无选择,所以“减速”不是一个考虑因素。你必须一口一口地做。一次说64k。你甚至会发现它更快。你没有任何选择,所以“减速”不是一个考虑因素。你必须一口一口地做。一次说64k。你甚至会发现它更快。你没有任何选择,所以“减速”不是一个考虑因素。你必须一口一口地做。一次说64k。你甚至会发现它更快。你没有任何选择,所以“减速”不是一个考虑因素。你必须一口一口地做。一次说64k。您甚至会发现它更快。最简单的方法是使用和类。这些类为您处理缓冲或“分段”加密方面。它们并不一定完美,这取决于你想做什么。如果缺少缓冲区,则可以自己管理缓冲区。类中当然有很多方法可以方便地进行加密/解密。最简单的方法是使用和类。这些类为您处理缓冲或“分段”加密方面。它们并不一定完美,这取决于你想做什么。如果缺少缓冲区,则可以自己管理缓冲区。类中当然有很多方法可以方便地进行加密/解密。最简单的方法是使用和类。这些类为您处理缓冲或“分段”加密方面。它们并不一定完美,这取决于你想做什么。如果缺少缓冲区,则可以自己管理缓冲区。类中当然有很多方法可以方便地进行加密/解密。最简单的方法是使用和类。这些类为您处理缓冲或“分段”加密方面。它们并不一定完美,这取决于你想做什么。如果缺少缓冲区,则可以自己管理缓冲区。这个类中当然有很多方法可以方便地进行加密/解密。我同意,你应该在块中读/写文件。类似的事情是在来自ApacheCommonsIO和其他人的UTIL中完成的,例如,请看这里:我同意,您应该以块的形式读/写文件。类似的事情是在来自ApacheCommonsIO和其他人的UTIL中完成的,例如,请看这里:我同意,您应该以块的形式读/写文件。类似的事情是在来自ApacheCommonsIO和其他人的UTIL中完成的,例如,请看这里:我同意,您应该以块的形式读/写文件。类似的操作是在Apache Commons IO和其他应用程序的UTIL中完成的,例如,请参见此处: