在java中怎样将在内存里创建文件? 出于安全需要,有个文件需要解密后在内存中使用,不能在硬盘上出现按照我的理解应该是在内存中创建文件,其他类通过一个Directory对象找到这个在内存中的文件不知道该怎么实现这种功能,希望各位高手们指点指点我~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 “解密到内存里”,信息是数字还是字符串?直接分配数据类型的变量或者String类型的变量存储就可以了。不必非要有一个形式上的“文件”比如密文是“abcde”读入到内存里String a = “abcde”;对a解密,操作…… 不是字符串。。是二进制文件。必须有一个形式上的“DIrectory”对象,否则之后无法进行操作。 二进制文件也不难操作啊。比如通过DataInputStream读入二进制数据,保存到一个数组中,然后实现Directory和二进制数据的映射不可以吗?我想的太简单了还是我没有理解lz的意思? 如果是二进制的可以用ByteArrayOutputStream写,然后用ByteArrayInputStream读文本的话直接弄成String就行了 Directory和数组能映射?怎么实现? 你没理解我的意思。。我要从内存中读出一个对象(Directory),不是一串字符。我读出的这个对象是要在后面的接口里面用的 那我觉得你不如去继承java.io.File,改写他一些方法 Java里面也只有File对象,没有Directory对象。不知道你要怎样的接口。如果只是提供OutputStream让其它代码输出,使用ByteArrayOutputStream就可以了。 晕,这么简单的问题有必要绕来绕去的么前提是你的文件尺寸不是巨大,否则内存会溢出,无论是用什么流,因为你要把文件的数据完整的放入内存所以必须要求有足够的内存这里我用的是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(); } }} FileInputStream in = new FileInputStream(new File("filePath"));这里把引号去掉,呵呵,写错了 不对啊,兄弟,我结贴匆忙没看清你的代码,现在仔细一看才发现你这个也不行我想要的不是String啊。。我想要一个在内存中的对象,比如File。这个File是不能出现在硬盘上的 我也需要,Java在内存创建内存文件,C的同事都喜欢这么做,引擎直接将一些状态内容写进内存文件,用户展示前台直接读取此内存文件或得数据 矩阵 被正则表达式输出结果弄晕了 一段关于HashTable的代码,实在是不明白 求助:异常类处理问题 请教一个关于构件的问题? swt 改变text中选中的字的字体 InputStreamReader和BufferedReader的区别? 刚学几天java有一个关于求素数的问题 请问查到端口被占用,怎么才能停了它。 JAVA怎样实现的在IE中打开WORD进行编辑的代码呀。我急用 请教 java 怎么读入不确定个数数字 关闭套接字出警告
不必非要有一个形式上的“文件”
比如密文是“abcde”
读入到内存里String a = “abcde”;
对a解密,操作
……
比如通过DataInputStream读入二进制数据,保存到一个数组中,然后实现Directory和二进制数据的映射不可以吗?
我想的太简单了还是我没有理解lz的意思?
文本的话直接弄成String就行了
我要从内存中读出一个对象(Directory),不是一串字符。我读出的这个对象是要在后面的接口里面用的
前提是你的文件尺寸不是巨大,否则内存会溢出,无论是用什么流,因为你要把文件的数据完整的放入内存所以必须要求有足够的内存
这里我用的是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();
}
}
}
这里把引号去掉,呵呵,写错了
不对啊,兄弟,我结贴匆忙没看清你的代码,现在仔细一看才发现你这个也不行
我想要的不是String啊。。我想要一个在内存中的对象,比如File。这个File是不能出现在硬盘上的