LinuxとWindowsのftpサーバー間でファイルを転送するC#.Netコンソールアプリコードがあります。
コードの動作は、ファイル転送のステータスを表示するためにコンソールを自動的に開くことです。Windowsサーバーとの間でファイルを転送しているときに、ファイル転送が進行中であることを示すインジケーターを表示する必要があります(移動または回転しているように見える記号を使用)。これらの記号は次のとおりです: "|" -> "/"-> "-"-> "\"-> "|"
次のコードを使用して、C#.Netで上記の「インジケーター/シンボル」を表示するのに問題はありませんでした。
ProcessStartInfo PSI = new ProcessStartInfo("CMD.exe", "/C [here is the call to psftp / ftp scripts]");
String SymbolChar = "|";
Process proc = Process.Start(PSI);
while (true)
{
Thread.sleep(20);
if (proc.HasExited)
{
Console.WriteLine("\b-> Done\n");
break;
}
else
{
SymbolChar = NextChar(SymbolChar);
Console.Write("\b{0}", SymbolChar);
}
}
StreamReader srError = proc.StandardError;
StreamReader srOutput = proc.StandardOutput;
//method used to animate status during process
private static String NextChar(String sCurrentChar)
{
String sTempChar = "";
if (sCurrentChar.equals("|")) {
sTempChar = "/";
}
else if (sCurrentChar.equals("/")) {
sTempChar = "-";
}
else if (sCurrentChar.equals("-")) {
sTempChar = "\\";
}
else if (sCurrentChar.equals("-")) {
sTempChar = "\\";
}
else if (sCurrentChar.equals("\\")) {
sTempChar = "|";
}
return sTempChar;
}
私の問題は、次のコードを使用して上記のコードをJavaに変換したときに始まりました。
String sParam = "bash " + [here is the call to psftp / ftp scripts];
String cmd[] = {"/bin/bash","-c",sParam};
Process proc = Runtime.getRuntime().exec(cmd);
上記のコードは完全に機能しています。問題は、「アニメ化された」キャラクターを表示する方法がわからなくなったことです。私は突然これを変換する方法を知りません(そして私はひどく助けが必要です):
Process proc = Process.Start(PSI);
while (true)
{
Thread.sleep(20);
if (proc.HasExited)
{
Console.WriteLine("\b-> Done\n");
break;
}
else
{
SymbolChar = NextChar(SymbolChar);
Console.Write("\b{0}", SymbolChar);
}
}
私が前進できるように、Javaの「if(proc.HasExited)」という行に何を使用できるかについて何か考えがありますか?
長い説明でごめんなさい。私は本当に、本当に助けが必要です。
事前にどうもありがとうございました!