在Java中回显find to BufferedReader的结果
我试图从运行时执行中获取输入流。但是下面的代码在getInputStream()中没有提供任何信息。我试图获取父目录“DPATH”中的文件数及其子目录下的文件数。下面的代码给了我一个空的输入流。我想要一个数字,就像在bash中使用命令find/mypath-typef|wc-l时一样在Java中回显find to BufferedReader的结果,java,bash,Java,Bash,我试图从运行时执行中获取输入流。但是下面的代码在getInputStream()中没有提供任何信息。我试图获取父目录“DPATH”中的文件数及其子目录下的文件数。下面的代码给了我一个空的输入流。我想要一个数字,就像在bash中使用命令find/mypath-typef|wc-l时一样 当Java库已经包含简单的功能,而不需要启动外部进程的复杂性和不可靠性时,为什么要使用find?看看java.nio.file.Files类。它提供您所需的一切,而无需调用任何外部流程。查看文件#walk(…)和文
当Java库已经包含简单的功能,而不需要启动外部进程的复杂性和不可靠性时,为什么要使用
find
?看看java.nio.file.Files
类。它提供您所需的一切,而无需调用任何外部流程。查看文件#walk(…)
和文件#walkFileTree(…)
。编写一个wc
等价物只需几行代码,或者只需查看java.io.File类即可。它有一个名为list()的方法,该方法返回File类型的数组。在筛选出目录时,您可以从中确定有多少文件项。@JimGarrison,因为我需要知道如何检索inputstream。我将查看您建议的解决方案,但如果我能够实现上述内容,这将非常有帮助。路径/DPATH
是否确实存在?您是否在IDE调试器中仔细检查了这段代码,以确保进程实际启动并且没有失败?find
是否位于指定给子流程的路径上?是否需要指定find
命令的完整路径?@JimGarrison,好的,我正在查看Files.walk()和Files.copy。我对使用NIOAPI的副本很感兴趣,但是在复制的过程中是否有捕获复制的文件数量的方法呢。这就是为什么我尝试使用目录中的文件数,以便在复制时使用sed
命令获取文件数,以显示进度条复制过程。因此,我需要数字、总大小和要复制的数字来获得商。当Java库已经包含简单的功能,而不需要启动外部进程的复杂性和不可靠性时,为什么要使用find
?看看java.nio.file.Files
类。它提供您所需的一切,而无需调用任何外部流程。查看文件#walk(…)
和文件#walkFileTree(…)
。编写一个wc
等价物只需几行代码,或者只需查看java.io.File类即可。它有一个名为list()的方法,该方法返回File类型的数组。在筛选出目录时,您可以从中确定有多少文件项。@JimGarrison,因为我需要知道如何检索inputstream。我将查看您建议的解决方案,但如果我能够实现上述内容,这将非常有帮助。路径/DPATH
是否确实存在?您是否在IDE调试器中仔细检查了这段代码,以确保进程实际启动并且没有失败?find
是否位于指定给子流程的路径上?是否需要指定find
命令的完整路径?@JimGarrison,好的,我正在查看Files.walk()和Files.copy。我对使用NIOAPI的副本很感兴趣,但是在复制的过程中是否有捕获复制的文件数量的方法呢。这就是为什么我尝试使用目录中的文件数,以便在复制时使用sed
命令获取文件数,以显示进度条复制过程。所以我需要数字,总大小和被复制的数字来得到一个商。
String line = "";
String command = "find /DPATH -type f | wc -l"
Process pr = Runtime.getRuntime().exec(command);
BufferedReader buff = new BufferedReader(new InputStreamReader( pr.getInputStream()));
while( ( line = buff.readLine() ) != null && !isCancelled() )
{
count = Integer.parseInt(line);
}
if (!isCancelled())
{
pr.waitFor();
buff.close();
pr.destroy();
}