java - 从 java 应用程序中打开 byte[] 作为文件,用户不应该能够编辑该文件

标签 java file-io

我当前打开的文件如下:

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/

相关文章:

c - 从文件中读取文本但显示不正确

java - 使用 Java 从 S3 存储桶和 HTTP PUT 文件以模拟实际文件上传的方式读取文件到另一个存储桶的预签名 AWS S3 URL

java - 使用 Java 从网站获取内容

java - `LockSupport.park()` 可以替换 `Object.wait()` 吗?

java - 对推特数据进行分类器训练

java - Spring使用MySQL访问数据不会运行

java - 与此代码中的 Count 用法混淆。

java - java 写入文件的帮助

java - 如何使用java以位方式保存文件?

ruby - 获取实例化类 ruby​​ 的文件目录