MyException - 我的异常网
当前位置:我的异常网» J2SE » java里就不能在内存中创建File对象么?该如何解决

java里就不能在内存中创建File对象么?该如何解决

www.MyException.Cn  网友分享于:2013-03-03  浏览:27次
java里就不能在内存中创建File对象么??
这个问题困扰我好久了,以前也来csdn上发过贴,没一个回答得靠谱的,我现在很郁闷
想知道有什么办法能让File直接写在内存里,不出现在硬盘上
如果不得不重写FIle类的话,也请各位大大们说得详细一点,究竟该怎么重写
拜托啦!!!

------解决方案--------------------
为什么要这种需求?

看样子你只是需要一个内存中的流而已,

StringWriter
ByteArrayOutputStream等
------解决方案--------------------
楼主,可能有点钻牛角尖了
为什么一定非要File类呢?
只要能达到缓冲效果,都是可以的
你可以自己定义一个类,把数据以字符形式放在类实例里面
这个类,至少有两个方法
一个是put,一个是toFile
平常数据都put到类实例,肯定是在内存了
需要的时候,再toFile

------解决方案--------------------
好像回答过lz的问题,显然被认为不靠谱了。你可以把具体的接口都说一下,比如要读的一方具体要用什么方式读取,然后了解java哪些事情能做哪些不能做
------解决方案--------------------
呵呵 楼主挺好
------解决方案--------------------
public class File
extends Object
implements Serializable, Comparable<File>
文件和目录路径名的抽象表示形式。

你可以把内存映射成一个磁盘,这样这个文件就出现在“内存”中了。
不过为什么不能把文件写在磁盘里呢?用完在删掉不就好了
------解决方案--------------------
转换思路........................
------解决方案--------------------
1.File :文件和目录路径名的抽象表示形式。人家的定义就是说File是表示文件或目录... 你非要人家变为内存中的一个映射,你自己觉得自己的要求合理么?
2.限于对方接口的要求,你只好继承File了.那主要是看,对方用了File的什么方法.如果仅仅用了read.那你可以确定对方是菜鸟了,因为这种情况下,都是用InputStream作为接口参数的.就怕它用了getAbsolutePath() 之类,那你还给构造出一个虚拟的路径.
3.继承还是比较简单的,自己定义个字符数组或者字符串链表,依次实现方法就是了.一动手就能写出来.
------解决方案--------------------
楼主这只能说明你面向对象思想不过关哦
------解决方案--------------------
程序,不是编译通过就算结束了。各个包、类、接口、方法之间完全是根据彼此的契约来协作的。
假设程序是一台精密仪器,包、类、方法就是其大小不同的部件。说明书上说了,要#9螺丝,那就是#9螺丝,

同样,要File,那就是File,不是像楼上想像的那样重写一个就完事的。假设
Java code
public class Fooooo {
  public Fooooo(File file) {
     ..... new FileInputStream(file); // 这个你怎么办,要知道,FileInput/OutputStream的关键代码都是native的,你怎么重写。
  }
}

------解决方案--------------------
Common VFS 支持内存虚拟文件系统。只不过提供的是FileObject接口
------解决方案--------------------
探讨

Common VFS 支持内存虚拟文件系统。只不过提供的是FileObject接口

------解决方案--------------------
我本来也是建议暂存在硬盘上然后删掉,既然不行,那么最好还是把那边的参数类型换了,做出这种设计的家伙本身有问题了。java封装得挺严,本来是供大家使用方便的,你这么做是逆了java的本性而行啊。
------解决方案--------------------
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2044.html#Introduction
通过JNI完全可以做到!
------解决方案--------------------
楼主你对一些知识存在误区。
存储系统是OS来管理的,java也是只是调用OS的API来调用OS提供的功能,所以你提到的File本来就是OS的文件系统维护的一段硬件存储(一般都是磁盘、软盘、U盘之类的)。
File在java管理的jvm中只是一些检索信息而已。文件实体并不是java能直接涉及的。
所以java要访问文件的内容,它得通过OS的API去检索硬件存储,并阅读存储中指定位置的字节流。这个过程就是将流读到内存中。

楼主写过文件读取应该知道 byte buffer[]这个东西拉,把文件中所有的字节都读到内存无非就是读了一个很大的 byte fileContent[]。

楼主想做到内存文件系统取代硬盘的功能,我很想知道是什么样的需求?

缓存方法提速也是推荐使用内存、硬盘混合使用的。

如果是做搜索引擎用来使用内存储存索引文件信息,但这个方面貌似人家是有现成的实现的。不过人家有人家的信息格式。

内存本来就是珍贵的资源。


------解决方案--------------------
探讨

程序,不是编译通过就算结束了。各个包、类、接口、方法之间完全是根据彼此的契约来协作的。
假设程序是一台精密仪器,包、类、方法就是其大小不同的部件。说明书上说了,要#9螺丝,那就是#9螺丝,

同样,要File,那就是File,不是像楼上想像的那样重写一个就完事的。假设
Java code
public class Fooooo {
public Fooooo(File file) ……

文章评论

为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
那些争议最大的编程观点
那些争议最大的编程观点
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
旅行,写作,编程
旅行,写作,编程
为什么程序员都是夜猫子
为什么程序员都是夜猫子
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
每天工作4小时的程序员
每天工作4小时的程序员
我是如何打败拖延症的
我是如何打败拖延症的
中美印日四国程序员比较
中美印日四国程序员比较
总结2014中国互联网十大段子
总结2014中国互联网十大段子
10个调试和排错的小建议
10个调试和排错的小建议
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
漫画:程序员的工作
漫画:程序员的工作
Java程序员必看电影
Java程序员必看电影
程序员和编码员之间的区别
程序员和编码员之间的区别
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
一个程序员的时间管理
一个程序员的时间管理
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员都该阅读的书
程序员都该阅读的书
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
我的丈夫是个程序员
我的丈夫是个程序员
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
编程语言是女人
编程语言是女人
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
老程序员的下场
老程序员的下场
代码女神横空出世
代码女神横空出世
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
鲜为人知的编程真相
鲜为人知的编程真相
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有