0

我想Runtime在相同的方法中使用两个。第二个使用第一个的结果。我在两个文件 ( *.txt) 中返回结果。第一个的执行结果是好的,但是第二个的文件是空的。

使用的代码如下:

public void applicationpackage() {
        try {
            Process process = Runtime.getRuntime().exec(
                    new String[] { "/bin/sh", "-c",
                            "ls " + pathPackage + "/*.apk" });
            process.waitFor();
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    process.getInputStream()));
            File f = new File(pathPackage + "/packagename.txt");
            PrintWriter writer = new PrintWriter(f, "UTF-8");
            String line = reader.readLine();
            while ((line != null)) {
                System.out.println(line);
                applicationPackage.add(line);
                writer.println(line);
                line = reader.readLine();
                Process p = Runtime.getRuntime().exec(new String[]{
                        "/bin/sh", "-c", "cut -d. -f2,3 <<<" + line
                });
                p.waitFor();
                BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); 
                File file = new File(pathPackage +"/application.txt");
                PrintWriter w = new PrintWriter(file, "UTF-8");
                String l = r.readLine();
                while(l!= null){
                    w.println(l);
                    w.println("toto");
                    l = r.readLine();
                }

                name+= "cut -d. -f2,3 <<<" + line +" &";

                System.out.println("toto" + name);
            }
            System.out.println("toto" + name);
            writer.close();


        } catch (IOException | InterruptedException e1) { }

}
4

1 回答 1

0

如果你的文件是空的,这通常意味着你PrintWriter没有设置自动刷新,或者你没有关闭 writer。最后一个参考ww.println("toto");. 添加w.close()到您的代码中。

此外,当您实例化 a 时,PrintWriter您应该在构造函数级别传入一个布尔值,以指示PrintWriter应该在每次操作后刷新。

于 2013-04-11T11:02:36.887 回答