如何将仅存在于内存中的对象文件作为文件存储在存储系统中?



我的程序刚刚收到一个对象,它是File的实例。如何将所述对象另存为文件? 我希望文件以人类可读的格式存储,这就是为什么仅将对象写入像这里这样的新文件并不能解决问题的原因。

我也不能像这里一样复制文件,因为我都知道的文件只存在于内存中,因此如果我将其设置为源,它不会被重新编码。

java.io.File对象不表示文件。 它实际表示的是文件系统路径名;即文件系统中可能存在也可能不存在的对象的名称。

因此,您的程序根本没有"接收"文件,您可以对收到的对象执行的唯一操作是保存路径名,或尝试复制路径名表示(或可能表示(的文件。 仅当路径名在应用程序的本地文件系统命名空间中有效并且表示真实文件(或文件的符号链接(时,后者才有效。

我也不能像这里一样复制文件,因为我已经知道的文件只存在于内存中。

这是没有道理的。File不能表示仅存在于内存中的文件(无论您的意思是什么(。 如果File::exists()返回true,则文件位于文件系统中。 如果它返回falseFile根本不表示可访问的文件:它不在磁盘上,也不在内存中。


某些操作系统支持所谓的"ram 文件系统",其中系统的物理或虚拟内存用于存储文件。 但是可以像普通文件一样复制此类文件中的文件。


Java 7 及更高版本允许您使用java.nio.file.FileSystem的子类定义自己的内存中"虚拟"文件系统。 但是File不适用于这种方法。 您可以改用java.nio.file.Path对象。


现在可能是您实际上想说的是,File表示存在于另一台计算机上的文件......这就是为什么你不能复制它。 如果这是问题所在,也没有简单的解决方案。 一台机器不能只是"伸出手"并读取另一台机器硬盘上的任意文件。 如果这是您的问题所在,则需要设置远程文件系统挂载或使用文件传输机制。

最新更新