执行第二次 readUntil方法 的时候 在方法体内 int ch= bufferReader.read();处没有任何反应了,是不是因为在执行第一次write("bea\r\n");的时候没有回车换行成功,还是因为什么其他原因啊package FTPTEST;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.StringReader;public class FTPCommonder { private String prompt = "$";
private PrintStream printStream;
private InputStream inputStream;
public static void main(String[] args){
FTPCommonder ftp = new FTPCommonder();
ftp.ftpDown();
}
public void ftpDown(){
try{
Process process = Runtime.getRuntime().exec("ftp 192.168.200.3");//连接FTP服务器
inputStream = process.getInputStream(); //输入流
printStream = new PrintStream(process.getOutputStream());//输出流
readUntil("User (192.168.200.3:(none)): ");// 第一次执行
write("bea\r\n");//登录账号
readUntil("Password: ");// 第二次执行
write("weblogic!\r\n");//登录密码
}catch(Exception e){
e.printStackTrace();
}
}
//读取分析结果
public String readUntil(String pattern) {
try {
char lastChar = pattern.charAt(pattern.length() - 1);
StringBuffer stringBuffer = new StringBuffer();
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(inputStream));
int ch= bufferReader.read(); while (true) {
stringBuffer.append((char)ch);
System.out.println(stringBuffer.toString());
if ((char)ch == lastChar) {
if (stringBuffer.toString().endsWith(pattern)) {//判断字符串是不是以指定文字作为结束
return stringBuffer.toString();
}
}
ch= bufferReader.read();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
} public void write(String value) {
try {
System.out.println("打印:"+value);
printStream.print(value);
printStream.flush();
} catch (Exception e) {
e.printStackTrace();
}
}}
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.StringReader;public class FTPCommonder { private String prompt = "$";
private PrintStream printStream;
private InputStream inputStream;
public static void main(String[] args){
FTPCommonder ftp = new FTPCommonder();
ftp.ftpDown();
}
public void ftpDown(){
try{
Process process = Runtime.getRuntime().exec("ftp 192.168.200.3");//连接FTP服务器
inputStream = process.getInputStream(); //输入流
printStream = new PrintStream(process.getOutputStream());//输出流
readUntil("User (192.168.200.3:(none)): ");// 第一次执行
write("bea\r\n");//登录账号
readUntil("Password: ");// 第二次执行
write("weblogic!\r\n");//登录密码
}catch(Exception e){
e.printStackTrace();
}
}
//读取分析结果
public String readUntil(String pattern) {
try {
char lastChar = pattern.charAt(pattern.length() - 1);
StringBuffer stringBuffer = new StringBuffer();
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(inputStream));
int ch= bufferReader.read(); while (true) {
stringBuffer.append((char)ch);
System.out.println(stringBuffer.toString());
if ((char)ch == lastChar) {
if (stringBuffer.toString().endsWith(pattern)) {//判断字符串是不是以指定文字作为结束
return stringBuffer.toString();
}
}
ch= bufferReader.read();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
} public void write(String value) {
try {
System.out.println("打印:"+value);
printStream.print(value);
printStream.flush();
} catch (Exception e) {
e.printStackTrace();
}
}}
java 可以这样做交互?
去掉这句 放在第二次write后
如果这么写的话,在第二次执行readUntil提示“java.io.IOException: Stream closed”错误