出于安全需要,有个文件需要解密后在内存中使用,不能在硬盘上出现
按照我的理解应该是在内存中创建文件,其他类通过一个Directory对象找到这个在内存中的文件
不知道该怎么实现这种功能,希望各位高手们指点指点我~~

解决方案 »

  1.   

    “解密到内存里”,信息是数字还是字符串?直接分配数据类型的变量或者String类型的变量存储就可以了。
    不必非要有一个形式上的“文件”
    比如密文是“abcde”
    读入到内存里String a = “abcde”;
    对a解密,操作
    ……
      

  2.   

    不是字符串。。是二进制文件。必须有一个形式上的“DIrectory”对象,否则之后无法进行操作。
      

  3.   

    二进制文件也不难操作啊。
    比如通过DataInputStream读入二进制数据,保存到一个数组中,然后实现Directory和二进制数据的映射不可以吗?
    我想的太简单了还是我没有理解lz的意思?
      

  4.   

    如果是二进制的可以用ByteArrayOutputStream写,然后用ByteArrayInputStream读
    文本的话直接弄成String就行了
      

  5.   

    Directory和数组能映射?怎么实现?
      

  6.   

    你没理解我的意思。。
    我要从内存中读出一个对象(Directory),不是一串字符。我读出的这个对象是要在后面的接口里面用的
      

  7.   

    那我觉得你不如去继承java.io.File,改写他一些方法
      

  8.   

    Java里面也只有File对象,没有Directory对象。不知道你要怎样的接口。如果只是提供OutputStream让其它代码输出,使用ByteArrayOutputStream就可以了。
      

  9.   

    晕,这么简单的问题有必要绕来绕去的么
    前提是你的文件尺寸不是巨大,否则内存会溢出,无论是用什么流,因为你要把文件的数据完整的放入内存所以必须要求有足够的内存
    这里我用的是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();
    }

    }
    }
      

  10.   

      FileInputStream in = new FileInputStream(new File("filePath"));
    这里把引号去掉,呵呵,写错了
      

  11.   


    不对啊,兄弟,我结贴匆忙没看清你的代码,现在仔细一看才发现你这个也不行
    我想要的不是String啊。。我想要一个在内存中的对象,比如File。这个File是不能出现在硬盘上的
      

  12.   

    我也需要,Java在内存创建内存文件,C的同事都喜欢这么做,引擎直接将一些状态内容写进内存文件,用户展示前台直接读取此内存文件或得数据