我有一个web应用程序,它显示了一堆文档链接。这些文档放在我的linux机器上。
现在我想用一个冒号显示每个文件的大小。
我现在想的解决办法是:
在谷歌搜索之后,我注意到
du -h /home/user/me/doc.txt gives the size of file.
因此,我正在考虑开发一个新的web服务,它将获取一个doc位置,连接到我的box并运行上面的命令并将大小吐回。
唯一担心的是我会有1000个结果。它们将放在不同的文件夹中。所以对每个文件运行上面的命令需要时间。
有什么办法能有效地完成我的工作吗。
谢谢
最佳答案
您可以使用java递归地读取所有文件,排除那些不需要的文件,并获得文件大小,但是调用du-h要快得多,需要的代码也更少。
//you will problably need to tune up a bit the du command
String[] cmd = {
"/bin/sh", "-c", "du -h /home/user/me/*.txt" };//to get all the txt files size in folder
try {
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader bri = new BufferedReader(new InputStreamReader(
p.getInputStream()));
String line = "";
while ((line = bri.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
更新
我在不同的目录中测试过mp3文件,用不了一秒钟,6000多个文件存储在不同的文件夹中。
使用的命令:
"/bin/sh", "-c", "du -h -a /media/mp3 | grep .mp3"