【发布时间】:2011-07-27 06:35:42
【问题描述】:
如何创建一个类 MockFile 模仿 java.io.File w.r.t.文件读写?我到处使用我自己的方法而不是new FileInputStream(....) 和new FileOutputStream(....),所以这部分没有问题(我总是委托给适当的流)。非琐碎部分是我的MockFileInputStream 和MockFileOutputStream 在更复杂的情况下的实现。
没有问题,当我先写入文件然后读取它时,我可以简单地使用ByteArrayOutputStream等等。这很简单,但是对于交错读取和写入,它无法工作。有什么比写我自己的ByteArrayOutputStream 更好的主意吗?
【问题讨论】:
-
为什么要通过文件在同一系统中的组件之间交换数据?为什么不使用临时文件来创建模拟文件?
-
您可能会在 [这里][1] [1] 找到答案:stackoverflow.com/questions/3148089/…
-
@Peter Lawrey 我不是在尝试交换数据,而是在尝试模仿程序的工作方式(用于某种集成测试)。使用临时文件非常容易,但速度不是很快,尤其是当我只需要几个字节时。
-
通过临时文件传递几个字节大约需要 10 毫秒。如果这是性能问题,为什么要使用文件?顺便说一句,如果您可以在 unix 上使用 tmpfs,例如/tmp/deleteme.dat,它只需要一小部分时间,因为它实际上并不写入磁盘,只写入内存。
-
@Peter Lawrey “如果这是性能问题,你为什么要使用文件?”在实际运行中,时不时地写入或读取这样的数据是没有问题的,但在测试中情况会更糟。但我同意这可能不值得麻烦,所以我会简单地使用临时文件,至少现在是这样。