社区
Java SE
帖子详情
如何创建存在于内存中文件,而不存在在实际硬盘上
J_CodeLiving
2010-11-18 11:52:03
原本我们创建文件读取文件时,都有起明确的路径和文件名,
但现在我的目的是,创建一个文件,但它只存在于缓存里,而实际的文件名和路径并不存在。
比如,我从DB得到一个byte[],要转成一个文件对象(File),但是又不能存放在磁盘上。
有没有什么办法????
...全文
375
10
打赏
收藏
如何创建存在于内存中文件,而不存在在实际硬盘上
原本我们创建文件读取文件时,都有起明确的路径和文件名, 但现在我的目的是,创建一个文件,但它只存在于缓存里,而实际的文件名和路径并不存在。 比如,我从DB得到一个byte[],要转成一个文件对象(File),但是又不能存放在磁盘上。 有没有什么办法????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
凉岑玉
2010-11-19
打赏
举报
回复
使用文件的话我觉得不太可能··使用DataOutputstream和DataInputstream吧··
J_CodeLiving
2010-11-19
打赏
举报
回复
[Quote=引用 9 楼 wjb_yd 的回复:]
引用 5 楼 j_codeliving 的回复:
引用 3 楼 lingxuch 的回复:
如要你不往硬盘上存文件,为何还要创建文件对象呢,如果你只是想把数据读到内存中可以这么做
//创建一个字节数组对象,这个对象可以当成一个内存缓存使用,可以往里面放字节进去
ByteArrayOutputStream bos=new ByteArrayOutputStream();
//通过wri……
[/Quote]
呵呵,有source code review
wjb_yd
2010-11-19
打赏
举报
回复
[Quote=引用 5 楼 j_codeliving 的回复:]
引用 3 楼 lingxuch 的回复:
如要你不往硬盘上存文件,为何还要创建文件对象呢,如果你只是想把数据读到内存中可以这么做
//创建一个字节数组对象,这个对象可以当成一个内存缓存使用,可以往里面放字节进去
ByteArrayOutputStream bos=new ByteArrayOutputStream();
//通过write方法往里放数据
bos.write("abc"……
[/Quote]
实在不行就创建个隐藏的文件作为临时对象,mail出去后,再把这个文件删掉。
J_CodeLiving
2010-11-19
打赏
举报
回复
[Quote=引用 7 楼 qingralf 的回复:]
文件也只不过是个byte数组罢了.可以。直接需要的时候在输出流直接write这个byte数组就可以了。
[/Quote]
我知道,文件通过java读取到内存中,要么是字符串,要么是一个流。但是,我java mail提供的attached方法,接收的都是File Object,可能是底层为了记录文件格式属性等,方便mail server客户端在收到带有attached的邮件时,还原成文件。
所以,我现在是要把从数据库中取出的一个byte[],在内存中构建成一个虚拟文件,在作为邮件的附件,通过java Mail 发送。
qingralf
2010-11-19
打赏
举报
回复
文件也只不过是个byte数组罢了.可以。直接需要的时候在输出流直接write这个byte数组就可以了。
caofaping
2010-11-19
打赏
举报
回复
[Quote=引用楼主 j_codeliving 的回复:]
原本我们创建文件读取文件时,都有起明确的路径和文件名,
但现在我的目的是,创建一个文件,但它只存在于缓存里,而实际的文件名和路径并不存在。
比如,我从DB得到一个byte[],要转成一个文件对象(File),但是又不能存放在磁盘上。
有没有什么办法????
[/Quote]
楼主准备用在什么地方?
J_CodeLiving
2010-11-19
打赏
举报
回复
[Quote=引用 3 楼 lingxuch 的回复:]
如要你不往硬盘上存文件,为何还要创建文件对象呢,如果你只是想把数据读到内存中可以这么做
//创建一个字节数组对象,这个对象可以当成一个内存缓存使用,可以往里面放字节进去
ByteArrayOutputStream bos=new ByteArrayOutputStream();
//通过write方法往里放数据
bos.write("abc".getBytes());
bos.wri……
[/Quote]
我其实是需要把,数据库中 byte[] 转换成一个文件,而且把这个文件作为MAIL的一个attached 文件,发出去? 但是由于数据安全,所以不能写在物理磁盘上。
bastengao
2010-11-19
打赏
举报
回复
[Quote=引用 3 楼 lingxuch 的回复:]
如要你不往硬盘上存文件,为何还要创建文件对象呢,如果你只是想把数据读到内存中可以这么做
//创建一个字节数组对象,这个对象可以当成一个内存缓存使用,可以往里面放字节进去
ByteArrayOutputStream bos=new ByteArrayOutputStream();
//通过write方法往里放数据
bos.write("abc".getBytes());
bos.wr……
[/Quote]+1
lingxuch
2010-11-19
打赏
举报
回复
如要你不往硬盘上存文件,为何还要创建文件对象呢,如果你只是想把数据读到内存中可以这么做
//创建一个字节数组对象,这个对象可以当成一个内存缓存使用,可以往里面放字节进去
ByteArrayOutputStream bos=new ByteArrayOutputStream();
//通过write方法往里放数据
bos.write("abc".getBytes());
bos.write("efg".getBytes());
//数据放好后可以用toByteArray得到所有数据组合成的一个字节数组
System.out.println(new String(bos.toByteArray()));
bos对象相当一个无限大的容器,你可以把任意多的数组放到里面,等你放好了之后就可以用其提供的toByteArray方法得到完整的字符数组
J_CodeLiving
2010-11-18
打赏
举报
回复
有人之前这么做过的吗?
计算机从
硬盘
中
读取数据传输到cpu,计算机的CPU为什么不直接调取
硬盘
文件
,而是要先载入到
内存
中
?...
原标题:计算机的CPU为什么不直接调取
硬盘
文件
,而是要先载入到
内存
中
?首先呢,现在计算机全部都是冯诺依曼结构,存储设备分为
内存
储设备和外存储设备,CPU的缓存和
内存
都属于
内存
储设备,而
硬盘
、光盘、U盘等都...
Linux——
内存
文件
系统
Linux
内存
文件
系统:可满足高IO的要求 ... ramfs: 物理
内存
文件
系统,只
存在
于物理
内存
中
。其大小也不是固定的,而是随着所需要的空间动态得增减。 挂载方式:mount -t ramfs none /mnt/ramfs -o maxsize=2000 ...
在windows系统
中
文件
的
实际
大小与
文件
所占
硬盘
空间的大小
以前没有注意过这个问题,今天查看一个
文件
夹的时候,发现这两个值差距还是很大的,尤其是在一个
文件
夹
中
有很多
文件
的这种情况下。 一般情况下,两者的大小应该很接近。但是当
文件
夹
中
细小的
文件
特别多的时候,...
内存
映射
文件
原理探索
首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建立一种一一对应关系,在这里主要是只
硬盘
上
文件
的位置与进程逻辑地址空间
中
一块大小相同的区域之间的一一对应,如图1
中
过程1所示。...
操作系统 |
内存
文件
映射 ——
文件
到
内存
的映射
为了提高性能而考虑的,程序访问一般都带有局部性,局部性原理,在这里主要是指的空间局部性,即我们访问了
文件
的某一段数据,那么接下去很可能还会访问接下去的一段数据,由于磁盘IO操作的速度比直接访问
内存
慢了好...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章