在java中怎么将在内存里创建文件
在java中怎样将在内存里创建文件?
出于安全需要,有个文件需要解密后在内存中使用,不能在硬盘上出现
按照我的理解应该是在内存中创建文件,其他类通过一个Directory对象找到这个在内存中的文件
不知道该怎么实现这种功能,希望各位高手们指点指点我~~
------解决方案--------------------
二进制文件也不难操作啊。
比如通过DataInputStream读入二进制数据,保存到一个数组中,然后实现Directory和二进制数据的映射不可以吗?
我想的太简单了还是我没有理解lz的意思?
------解决方案--------------------
晕,这么简单的问题有必要绕来绕去的么
前提是你的文件尺寸不是巨大,否则内存会溢出,无论是用什么流,因为你要把文件的数据完整的放入内存所以必须要求有足够的内存
这里我用的是MappedByteBuffer主要是效率高,直接映射到内存
出于安全需要,有个文件需要解密后在内存中使用,不能在硬盘上出现
按照我的理解应该是在内存中创建文件,其他类通过一个Directory对象找到这个在内存中的文件
不知道该怎么实现这种功能,希望各位高手们指点指点我~~
------解决方案--------------------
二进制文件也不难操作啊。
比如通过DataInputStream读入二进制数据,保存到一个数组中,然后实现Directory和二进制数据的映射不可以吗?
我想的太简单了还是我没有理解lz的意思?
------解决方案--------------------
晕,这么简单的问题有必要绕来绕去的么
前提是你的文件尺寸不是巨大,否则内存会溢出,无论是用什么流,因为你要把文件的数据完整的放入内存所以必须要求有足够的内存
这里我用的是MappedByteBuffer主要是效率高,直接映射到内存
- Java code
public class Directory{ private String file; public Directory(String filePath){ setFile(filePath); } public String getFile() { return this.file; } public void setFile(String filePath) { try { FileInputStream in = new FileInputStream(new File("filePath")); FileChannel fileChannel = in.getChannel(); MappedByteBuffer mappedByteBuffer = fileChannel.map(FileChannel.MapMode.READ_ONLY, 0, fileChannel.size()); byte[] bytes = new byte[(int) fileChannel.size()]; mappedByteBuffer.get(bytes); //这里我只是简单的举例处理数据 //假设源文件是文本文件,文件内都是算法加密的文本 //假设有一个算法类Algorithm类有个静态decrypt方法用来还原加密文本 String file = Algorithm.decrypt(bytes.toString()); this.file = file; } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }