【问题标题】:access right to parse an XML in java在 java 中解析 XML 的访问权限
【发布时间】:2011-10-25 03:12:24
【问题描述】:

你好,我必须执行这个命令:

    docRules = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().parse( new File(IeplcDeployRules.clx));

当我尝试创建解析器时,出现以下错误:

java.io.FileNotFoundException: /.../IeplcDeployRules.clx (Permission denied)

如果我尝试手动读取文件,它可以工作,但我无法写入,因为以下是权限。

-rwxr-xr-x 1 ieplcop ieplcdev  3424 Aug 11 17:16 IeplcDeployRules.clx

我不想更改权限,因为文件只需要从我的 Java 应用程序中读取。因此我想应该有一种方法可以指定文件应该以只读模式打开。

我查看了 File() parse() 和 .newDocumentBuilder() 的可能参数,但它们都没有让我指定该操作是只读的!

知道如何进行吗?

干杯, 步骤

【问题讨论】:

  • 你能修复一下代码 sn-p 吗?这可能很重要。
  • 这种情况发生在哪种应用程序中?你在用tomcat吗?
  • 我不知道什么是sn-p。对不起。
  • 它不是 tomecat... 它是一个在 linux 下运行的普通 java 应用程序。

标签: java file parsing permissions


【解决方案1】:

我不知道DocumentBuilder 在内部做什么,我必须阅读它的源代码。但是您可以使用不同的InputSource 而不是File,这样您就可以完全控制。例如FileReader

documentBuilder.parse(new InputSource(new FileReader(...));

【讨论】:

  • 我已经尝试过了,但是解析不能应用于这样的对象!仅接受文件或输入源!
  • 是的,但是 InputSource 只是一个包装器...我添加了一个示例
【解决方案2】:

您应该将InputStream 传递给parse 方法,而不是File

例如:

docRules = DocumentBuilderFactory.newInstance()
    .newDocumentBuilder().parse( new FileInputStream(new File("IeplcDeployRules.clx")));

【讨论】:

    猜你喜欢
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    相关资源
    最近更新 更多