java - 如何将仅存在于内存中的对象文件存储为存储系统内部的文件?
问题描述
我的程序刚刚收到一个Object,它是File的实例。如何将所述对象保存为文件?我希望文件以人类可读的格式存储,这就是为什么只将对象写入像这里这样的新文件不会成功的原因。
我也不能像这里一样复制文件,因为我已经知道的文件只存在于内存中,因此如果我将它设置为源,它将不会被识别。
解决方案
java.io.File
对象不代表文件。它实际代表的是文件系统路径名;即文件系统中可能存在或不存在的对象的名称。
因此,您的程序根本没有“接收”文件,您可以对收到的对象执行的唯一操作是保存路径名,或尝试复制路径名表示(或可能表示)的文件。后者仅在路径名在应用程序的本地文件系统名称空间中有效并且它表示真实文件(或文件的符号链接)时才有效。
我也不能像这里一样复制文件,因为我已经知道的文件只存在于内存中。
那没有意义。AFile
不能表示仅存在于内存中的文件(无论您的意思是什么)。如果File::exists()
返回true
,则文件在文件系统中。如果它返回false
,则File
根本不表示可访问文件:它不在磁盘上,也不在内存中。
一些操作系统支持所谓的“ram 文件系统”,其中系统的物理或虚拟内存用于存储文件。但是这样一个文件中的文件可以像普通文件一样被复制。
Java 7 及更高版本允许您使用java.nio.file.FileSystem
. 但是File
不适用于这种方法。您java.nio.file.Path
改为使用对象。
现在,您实际上可能要说的是,File
表示存在于另一台机器上的文件……这就是您无法复制它的原因。如果这是问题所在,也没有简单的解决方案。一台机器不能只是“伸出”并读取另一台机器硬盘上的任意文件。如果这是您的问题,您将需要设置远程文件系统挂载,或使用文件传输机制。
推荐阅读
- python - Python - 如何返回一个字符串,其中每个数字都被相应数量的感叹号(!)
- python - 使用pickle load获取一行数据并显示在表格中?
- python - “从 include.data 导入 get_data_set”行上找不到模块错误
- php - 使用 php 在 pgadmin 上更改密码的问题
- typescript - Typescript - 要输入的字符串
- css - Vue:类的条件渲染
- reactjs - 使用 apollo 钩子和过多重新渲染的一般建议
- reactjs - React:同一组件的多个实例配置不同
- symfony - 使用表单事件添加的字段用于 symfony 中的集合项
- ubuntu - glx 和 xrandr 版本是否属于远程桌面环境中客户端的硬件?