Java 通过python脚本在Eclipse中创建了一个新文件,并试图在同一程序中访问它,但该文件为空

Java 通过python脚本在Eclipse中创建了一个新文件,并试图在同一程序中访问它,但该文件为空,java,python,eclipse,filereader,restart,Java,Python,Eclipse,Filereader,Restart,我使用字符串cmd[]构建了一个脚本,创建了一个名为gene_Counts2.text的文件,它成功地创建了这个文件,并且填充了大量文本 但是,当我使用filereader和bufferreader迭代文本并打印它时,不会发生这种情况,因为代码中的line1为null 然而,一旦程序运行完毕,我尝试遍历文件,它就可以工作了 那么,如何在不重新启动程序的情况下访问文件内容呢?您应该使用Runtime.getRuntime.execcmd.waitFor;等待命令完成 另外,您似乎正在创建一个Fil

我使用字符串cmd[]构建了一个脚本,创建了一个名为gene_Counts2.text的文件,它成功地创建了这个文件,并且填充了大量文本

但是,当我使用filereader和bufferreader迭代文本并打印它时,不会发生这种情况,因为代码中的line1为null

然而,一旦程序运行完毕,我尝试遍历文件,它就可以工作了

那么,如何在不重新启动程序的情况下访问文件内容呢?

您应该使用Runtime.getRuntime.execcmd.waitFor;等待命令完成

另外,您似乎正在创建一个FileReader fileReader2,您从未使用过它,您最好使用它:

String[] cmd = {
                "/bin/bash",
                "-c",
                "python count_freqs.py gene.train > gene_counts2.txt",
        };
        Runtime.getRuntime().exec(cmd);
        bufferReader.close();
        fileReader.close();
        FileReader fileReader2 =  new  FileReader("/home/mordor/workspace/GeneNamesInBiologicalText/gene_counts2");
        String newLine ;
        try (BufferedReader br = new BufferedReader(new FileReader("/home/mordor/workspace/GeneNamesInBiologicalText/gene_counts2.txt"))) {
            String line1;
            while ((line1 = br.readLine()) != null) {
              System.out.println(line1);
            }
        }*/

您还应该使用ProcessBuilder。

嘿,谢谢泰特斯,这很有效!是的,关于FileReader,我对代码进行了大量编辑,以找到一个解决方案,但我忘了删除它,但感谢您指出这一点!
String[] cmd = {
            "/bin/bash",
            "-c",
            "python count_freqs.py gene.train > gene_counts2.txt",
    };
    Runtime.getRuntime().exec(cmd).waitFor(); // wait until command gets terminated
    bufferReader.close();
    fileReader.close();
    FileReader fileReader2 =  new  FileReader("/home/mordor/workspace/GeneNamesInBiologicalText/gene_counts2.txt"); // never used, repair line
    String newLine; // coding properly
    try (BufferedReader br = new BufferedReader(new FileReader("/home/mordor/workspace/GeneNamesInBiologicalText/gene_counts2.txt"))) {
        String line1;
        while ((line1 = br.readLine()) != null) {
          System.out.println(line1);
        }
    }*/