我有一个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"

10-05 20:49
查看更多