如果我有文件的相对路径,如何在 Java 中获取文件大小,例如:
String s = "/documents/19/21704/file2.pdf/0929c695-d023-49d7-a8ff-65ccea46bebc"
我尝试了两个不同的字符串:
String[] separatedPath = s.split("/");
List<String> wordList = Arrays.asList(separatedPath);
String ret = "/" + wordList.get(1) + "/" + wordList.get(2) + "/" + wordList.get(3)+ "/" + wordList.get(4);
s = ret;
在这种情况下 s="/documents/19/21704/file2.pdf";
在第二种情况下 s="/documents/19/21704/file2.pdf/0929c695-d023-49d7-a8ff-65ccea46bebc"
我试过:
File file1 = new File(s);
long filesize = file1.length();
与:
String filePath = new File(s).toURI().getPath();
File file2 = new File(filePath);
long filesize2 = file1.length();
还有(如果问题在于没有提供完整路径):
String absolutePath = FileUtil.getAbsolutePath(file1);
File file3 = new File(absolutePath);
long filesize3 = file3.length();
byte[] bytes1=FileUtil.getBytes(file1);
byte[] bytes2=FileUtil.getBytes(file2);
byte[] bytes3=FileUtil.getBytes(file3);
我总是在调试,所有情况下的文件大小都是 0。
也许值得注意的是,file1 和 file2 和 file3 的三个属性始终是:
filePath: which is always null;
path: "/documents/19/21704/liferay-portlet-development.pdf"
prefixLength: 1
因为我也在使用 Liferay,所以我也尝试了他们的实用程序。
long compId = article.getCompanyId();
long contentLength = DLStoreUtil.getFileSize(compId, CompanyConstants.SYSTEM, s);
我还应该注意到,在我的 .xhtml 视图中,我可以通过以下方式访问该文件:
<a target="_blank"
href="/documents/19/21704/file2.pdf/0929c695-d023-49d7-a8ff-65ccea46bebc">
file2.pdf
</a>
Pdf 在新窗口中打开。所以它存储在我的服务器上。
我在这里做错了什么?我无法从 bean 获取文件大小?
任何答案将不胜感激。
我在这里做错了什么?