次のようなファイルへの相対パスがある場合、Java でファイル サイズを取得するにはどうすればよいですか。
String s = "/documents/19/21704/file2.pdf/0929c695-d023-49d7-a8ff-65ccea46bebc"
私は2つの異なる文字列で試しました:
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";
2 番目のケースでは、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 の 3 つの属性が常に次のようになっていることに注意してください。
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が別窓で開きます。したがって、それは私のサーバーに保存されます。
ここで何が間違っていますか?ビーンからファイルサイズを取得できませんか?
どんな答えでも大歓迎です。
ここで何が間違っていますか?