如何在使用流程

时间:2017-08-22 20:07:55

标签: java eclipse file cmd

在使用运行进程的同时检测文件是否存在时出现问题。更准确。我在互联网上找到了这些代码:

import java.io.InputStream;
import java.io.OutputStream;

public class SyncPipe implements Runnable {
public SyncPipe(InputStream istrm, OutputStream ostrm) {
  istrm_ = istrm;
  ostrm_ = ostrm;
  }
  public void run() {
   try {
    final byte[] buffer = new byte[1024];
    for (int length = 0;
     (length = istrm_.read(buffer)) != -1;) {
     ostrm_.write(buffer, 0, length);
    }
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  private final OutputStream ostrm_;
  private final InputStream istrm_;
 }

而且:

   String[] command = {
    "cmd"
   };
   Process p;
   try {
    p = Runtime.getRuntime().exec(command);

    new Thread(new SyncPipe(p.getErrorStream(), System.err)).start();
    new Thread(new SyncPipe(p.getInputStream(), System.out)).start();

    PrintWriter stdin = new PrintWriter(p.getOutputStream()); 

帮助我运行命令提示符并使用其命令。到目前为止,工作得很好。我使用wget命令连接到服务器,使用用户名和密码下载使用7za命令提取的文件。这两个命令都在cmd中。我每天骑自行车一个月,看看是否有新的文件更新。我想要做的是建立文件以停止for循环并继续执行程序。我一直在使用File tmpDir = new File("path"); if(tmpDir.exists()) break;。但是在运行了几次测试并最终看到它为什么没有工作后,我发现该程序首先进行这些测试,然后开始执行带有cmd的程序。我尝试将syso放在代码中的随机位置,并将所有这些放在首次执行的位置,然后命令提示符开始工作。在任何帮助下,我将不胜感激。如果还有不清楚的地方,比如说。

代码示例:

String[] command = {
"cmd"
};
Process p;
try {
p = Runtime.getRuntime().exec(command);   
new Thread(new SyncPipe(p.getErrorStream(), System.err)).start();
new Thread(new SyncPipe(p.getInputStream(), System.out)).start();   
PrintWriter stdin = new PrintWriter(p.getOutputStream());

for(int i = 0; i < 30; i++)
{
stdin.println("wget -r --output-document=file.zip --http-user=user --http-password=pass http://example.com");
stdin.println("7za e file.zip");
File tmpDir = new File(file.zip);
System.out.println(tmpDir.getAbsolutePath());
if(tmpDir.exists())
    break;
}

从程序中减少代码。在absolutePath()

之前,此stdin.println()会在控制台上打印30次

0 个答案:

没有答案