【发布时间】:2012-02-18 11:19:14
【问题描述】:
我需要根据我使用的 API,实现一个带有 InputStream 参数的方法(FileInputStream 的实例),该方法将调用带有 File 参数的方法。
implementedMethod(InputStream is){
FileInputStream fis = (FileInputStream)is; //always works
File f = (???) ????(???).???;
calledMethod(f);
}
那么当我只有FileInputStream 时,我该如何提供File?我不明白FileChannel 或FileDescriptor(都在FIS)到底是什么以及它们是如何工作的。
我猜这无法完成,我将不得不在文件系统上实际写入一个(临时)文件。如果没有,如果我可以使用 FileChannel 或 FileDescriptor 在内存中创建我的文件,或者甚至使用 RandomAccessFile (?)我想知道如何......
构造一个可读的File 对象是否需要它存在于磁盘上的某个位置?我觉得这很奇怪......
【问题讨论】:
-
您为什么要这样做?这就像从子类调用超类,这是不好的做法。也许你没有正确模块化你的问题?
-
如果您期望 FileInputStream,为什么不将形参类型更改为
FileInputStream。如果您需要File,请将其更改为文件并自己构建流。
标签: java file virtual fileinputstream