【问题标题】:How to check filesize in Java without reading the file from an UNC Path?如何在 Java 中检查文件大小而不从 UNC 路径读取文件?
【发布时间】:2019-09-11 14:45:45
【问题描述】:

我想知道如何在不通过 UNC 路径从两个不同的 Microsoft 服务器打开或读取文件的情况下检查 Java 中的文件大小? 它用于接口引擎过滤器功能。所以没有 HTML DOM 等可用。

现在有效的方法: API中有一个Util函数

java.nio.file.Files.size(java.nio.file.Paths.get('/path/to/file')

由于错误而无法在 UNC PATHS 上运行:

Wrapped java.nio.file.AccessDeniedException: \\server\folder\file.pdf

使用示例:

var filePath = msg['path'].toString();
try{
    var fileContent = java.nio.file.Files.size(java.nio.file.Paths.get(filePath));
    var fileSize = fileContent / 1048576;
    logger.debug("Filesize in MB: " + fileSize);
}
catch(e){
...

期望:一种通过 UNC 访问读取文件大小输出文件属性的方法

【问题讨论】:

  • 您链接的文档是针对 Java API 而不是 JavaScript 的。
  • 是的,你是对的。但连接器是用 javascript 编写的
  • 您需要更新您的问题以反映您正在尝试通过 UNC 路径获取远程共享上的文件大小。应该删除 javascript 标记,因为在 mozilla rhino(mirth 使用)中没有针对此的纯 javascript 解决方案。您需要一个 Java 解决方案(这可能是一个重复的问题)并且转换为 mirth javascript 是微不足道的并且超出了范围这个问题。
  • 您的 mirth 服务用户是否有权访问您尝试访问的共享和文件?

标签: java filesize mirth


【解决方案1】:

由于您知道文件路径,您总是可以使用 java.io.File.length() 来返回文件的长度(以字节为单位)。即:

var filePath = msg['path'].toString();
// Validate that the filePath is indeed a file and it exists
var fileSize = Packages.java.io.File(filePath).length();

【讨论】:

  • 我已经解决了这个问题:var filePath = msg['pfad'].toString(); var fileContent = java.nio.file.Files.size(java.nio.file.Paths.get(filePath)); 并且可以将它包装到一个 try try...catch 语句中,但现在我得到了:Wrapped java.nio.file.AccessDeniedException: \\server\folder\file.pdf
  • 我在下面的论坛帖子中提到我给你的答案是针对本地文件,UNC 路径名支持仅适用于 Windows。该共享将以您运行 mirth 服务的用户身份访问,显然该用户需要访问该路径。 mirthcorp.com/community/forums/…
  • 虽然这两种解决方案都有效,但 java.nio.file 包在无效时会提供更好的例外。
猜你喜欢
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多