日期:2014-05-20  浏览次数:20889 次

在java中怎样将在内存里创建文件?
出于安全需要,有个文件需要解密后在内存中使用,不能在硬盘上出现
按照我的理解应该是在内存中创建文件,其他类通过一个Directory对象找到这个在内存中的文件
不知道该怎么实现这种功能,希望各位高手们指点指点我~~
------解决方案--------------------
二进制文件也不难操作啊。
比如通过DataInputStream读入二进制数据,保存到一个数组中,然后实现Directory和二进制数据的映射不可以吗?
我想的太简单了还是我没有理解lz的意思?
------解决方案--------------------
晕,这么简单的问题有必要绕来绕去的么
前提是你的文件尺寸不是巨大,否则内存会溢出,无论是用什么流,因为你要把文件的数据完整的放入内存所以必须要求有足够的内存
这里我用的是MappedByteBuffer主要是效率高,直接映射到内存

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();
}

}
}