FileWriter()损坏文件警告

时间:2012-06-05 09:48:32

标签: java excel warnings filewriter corrupt

我有一个将jTable个实例转换为Excel文件的应用。在我之前的问题中,我在使用FileOutputStream()时遇到了问题,结果发现问题在于AD用户访问文件夹/文件的权限。由于我的上司不会允许我更改权限,所以我使用FileWriter()代替,这很有效。唯一的问题是它一直警告用户他们正在打开的文件已损坏。这是警告:

  

您尝试打开的文件'filename.xls'的格式与文件扩展名指定的格式不同。在打开文件之前,请验证文件是否已损坏且是否来自受信任的源。你想现在打开文件吗?

我搜索了一个驻留在Excel 2007的文件扩展名安全性中的解决方案。可以找到信息here

我在应用程序涵盖的每个工作站的系统注册表中进行了一些配置。

我只是想问一下是否有办法删除Office 14中的损坏文件警告,因为其中一个工作站(我的上级工作站)有Office 14.系统注册表中的更改没有阻止损坏的文件警告在他的工作站里。

1 个答案:

答案 0 :(得分:3)

我的印象是你沉迷于“伏都教编程”的做法;即将您不理解的解决方案应用于您不理解的问题。

首先,这个:

  

我在使用FileOutputStream()时遇到问题,结果发现问题在于AD用户访问文件夹/文件的权限。由于我的上司不允许我更改权限,所以我使用了FileWriter()代替,这很有效。

坦率地说,这没有意义。如果您无法使用new FileOutputStream(File)打开文件,则无法使用new FileWriter(File)打开该文件。为什么?因为构造函数的源代码是:

    public FileWriter(File file) throws IOException {
        super(new FileOutputStream(file));
    }

换句话说,FileWriter构造函数所做的第一件事就是调用你说不起作用的FileOutputStream构造函数! (这同样适用于这些构造函数的其他重载。)

然后您当前的问题实际上是关于Excel不让您打开XLS文件,因为它的文件类型与其后缀不匹配。你提出的解决方案就是搞乱注册表。但肯定的是,CORRECT方法是找出为什么文件类型与后缀不匹配。

  • 您是否以文件格式制作了mistaKe(例如'使用FileWriter写的')?
  • 您是否为您使用的电子表格格式选择了错误的文件后缀?
  • 您是否使用错误的MIMEtype将其下载到用户的计算机上?

在所有客户端计算机上的注册表上敲击...只是因为你在某个网站上阅读它...那就是Voodooo!

我并不感到惊讶,你的老板禁止你乱用AD权限。在这一点上,他可能担心你会造成严重的伤害。


顺便说一句,你的注册表黑客攻击警告消失实际上是关闭了一个安全检查,旨在帮助强化用户的PC免受攻击。这对我来说不是一个合理的解决方案。