我当前打开的文件如下:
File f = File.createTempFile(prefix, suffix);
f = FileUtil.writeBytes(b.getBlob(), f);
Desktop.getDesktop().open(f);
上下文描述: 该文件存储在服务器上。当您想要查看文件时,将从服务器检索 byte[] 并将其放入 File 对象中(请参阅上面代码示例的第 2 行)。 现在,当用户打开文件(例如 txt 文件)时,可以编辑和保存文件(它甚至不要求文件名,因为您在基于上述示例中的 blob 创建文件时已给出)。 但是我不想要这种行为。我希望文件保存的行为与“另存为”类似,类似于不存在的文件。
简而言之:
我有:
- 包含位于服务器上的 .txt 内容的 byte[]
我要
- 能够在关联程序(例如记事本)中打开文件,而无需在客户端 PC 上实际创建文件。当用户按下“保存”时,应该提示输入文件名,就像第一次保存新文件时一样。
我该怎么办?
我想要的行为示例:例如雷鸟等电子邮件客户端中的邮件附件行为。当单击 txt 附件时,它要求我 a) 使用 ... 打开,或 b) 保存到 ... 。如果我选择打开方式,然后在文本编辑器中选择保存,它会提示我输入名称和位置。
最佳答案
不可撤销。即使您在打开临时文件后不久删除该文件,例如记事本也不会看到它。其他人会要求在同一地点重新创建。
另一种选择还不够吗:首先是“创建新文件” - 文件保存对话框 - 在所需位置创建文件,然后执行 Desktop.open。
关于java - 从 java 应用程序中打开 byte[] 作为文件,用户不应该能够编辑该文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20546898/