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

在java中怎样将在内存里创建文件?
出于安全需要,有个文件需要解密后在内存中使用,不能在硬盘上出现
按照我的理解应该是在内存中创建文件,其他类通过一个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();
        }
        
    }
}