gpt4 book ai didi

java - 如何将批处理文件的处理量转换为百分比

转载 作者:行者123 更新时间:2023-12-01 08:48:12 24 4
gpt4 key购买 nike

我有以下代码:

    File file = new File("//path/to/BatchFile");
long fileLength = 0 ;
if(file.exists()){
fileLength = file.length();
}

Process process = Runtime.getRuntime().exec("cmd /c " + "//path/to/batchfile");
InputStream inputStream = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));

String s;
long bytesRead=0;

while (( s = br.readLine()) != null) {
bytesRead = bytesRead + s.getBytes().length + 2; // forget about +2
int progress = (int) (( bytesRead/ fileLenth)*100 );
System.out.println("Progress : "+ progress);

}

我想做的是运行一个批处理文件并将其转换为 BufferedReader 以计算进度条的百分比。但我的百分比超过了 100。

帮助我纠正我做错的事情,或者让我知道如何将“过程”部分转换为百分比。

最佳答案

How to get the size of an InputStream?

An InputStream inherently doesn't have a size. It could conceivably keep delivering bytes forever. Or the producing end could end the stream without warning.

If you must find out the length, then you have to read to the end, counting the bytes, and report the length when you finish.

我假设批处理文件返回结果,并且您不希望知道批处理文件的大小。

因为批处理以流的形式返回结果,所以您不知道流的大小。如果批量将结果写入另一个文件,您可以使用文件长度开始读取结果文件。


更新
您指出了批处理逻辑。批量 checkout SVN 项目,并且您希望获得 checkout 元素的数量。这是一个不同的请求!

它更像是您必须使用的另一个 SVN 请求。您可以首先请求特定文件夹的 SVN 子级。然后,您必须读取结账流结果并分析内容。

您必须搜索定义结帐命令完成(成功和不成功)的关键字。这将增加进度计数器而不是流字节。

关于java - 如何将批处理文件的处理量转换为百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42551455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com