gpt4 book ai didi

java - 如何在 Java Web 处理程序中获取本地文件大小?

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:16 25 4
gpt4 key购买 nike

如何在 Web 处理程序中获取本地文件长度?

@RequestMapping(value = "xxx.iso", method = { RequestMethod.HEAD })
public void doChunkedHEAD(HttpServletResponse response) {

try {
URL fileUrl = servletContext.getResource(filename);
File fileObj = new File(fileUrl.toString());
long fileSize = fileObj.length();
response.setHeader("Content-Length", String.valueOf(fileSize));

} catch (Exception e) {

}
}

fileSize 始终为 0。fileUrl 如下所示:

file:/C:/xxx.iso

并且fileObj.exists()返回false。但该文件确实以 C:\xxx.iso 形式存在。

如果我使用绝对本地路径,可以获得大小:

@RequestMapping(value = "xxx.iso", method = { RequestMethod.HEAD })
public void doChunkedHEAD(HttpServletResponse response) {
File fileObj = new File("C:\\xxx.iso");
long fileSize = fileObj.length();
response.setHeader("Content-Length", String.valueOf(fileSize));
}

为什么?

我使用的是 Java 1.7.76。

最佳答案

我设法用下面的代码做到了:

@RequestMapping(value = "xxx.iso", method = { RequestMethod.HEAD })
public void doChunkedHEAD(HttpServletResponse response) {

try {
String localAppRootPath = servletContext.getRealPath("/");
Path filePath = Paths.get(localAppRootPath, "xxx.iso");
File fileObj = new File(filePath.toString());
long fileSize = fileObj.length();
response.setHeader("Content-Length", String.valueOf(fileSize));
} catch (Exception e) {

}
}

但我仍然不知道为什么我不能使用 URL 来代替。

关于java - 如何在 Java Web 处理程序中获取本地文件大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38030229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com