public class WriteToProcess
{
public static void main(String[] args)
{
PrintStream ps = null;
try
{
//运行java ReadStandard命令,返回运行该命令的子进程
Process p = Runtime.getRuntime().exec("java ReadStandard");
//以p进程的输出流创建PrintStream对象
//这个输出流对本程序是输出流,对p进程则是输入流)
ps = new PrintStream(p.getOutputStream());
//向ReadStandard程序写入内容,这些内容将被ReadStandard读取
ps.println("普通字符串");
ps.println(new WriteToProcess());
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
if (ps != null)
ps.close();
}
}
}
//定义一个ReadStandard类,该类可以接受标准输入,
//并将标准输入写入out.txt文件。
class ReadStandard
{
public static void main(String[] args) throws Exception
{
//使用System.in创建Scanner对象,用于获取标准输入
Scanner sc = new Scanner(System.in);
PrintStream ps = new PrintStream(
new FileOutputStream("out.txt"));
//增加下面一行将只把回车作为分隔符
sc.useDelimiter("\n");
//判断是否还有下一个输入项
while(sc.hasNext())
{
//输出输入项
ps.println("键盘输入的内容是:" + sc.next());
}
ps.close();
}
}
本程序在cmd窗口下正常运,可以生成out.txt,其中的内容为
键盘输入的内容是:普通字符串
键盘输入的内容是:WriteToProcess@1b67f74
然而在Eclipse中运行却无法生成out.txt?
public class WriteToProcess {
public static void main(String[] args) {
PrintStream ps = null;
try {
// 运行java ReadStandard命令,返回运行该命令的子进程
System.out.println("start");
Process p = Runtime.getRuntime().exec("java ReadStandard");
// 以p进程的输出流创建PrintStream对象
// 这个输出流对本程序是输出流,对p进程则是输入流)
ps = new PrintStream(p.getOutputStream());
// 向ReadStandard程序写入内容,这些内容将被ReadStandard读取
ps.println("普通字符串");
ps.println(new WriteToProcess());
InputStream error = p.getErrorStream();
System.out.println(convertStreamToString(error));
System.out.println("start");
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (ps != null)
ps.close();
}
}
public static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "/n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
// 定义一个ReadStandard类,该类可以接受标准输入,
// 并将标准输入写入out.txt文件。
class ReadStandard {
public static void main(String[] args) throws Exception {
System.out.println("ReadStandard.");
// 使用System.in创建Scanner对象,用于获取标准输入
Scanner sc = new Scanner(System.in);
PrintStream ps = new PrintStream(new FileOutputStream("out.txt"));
// 增加下面一行将只把回车作为分隔符
sc.useDelimiter("\n");
// 判断是否还有下一个输入项
while (sc.hasNext()) {
// 输出输入项
ps.println("键盘输入的内容是:" + sc.next());
}
ps.close();
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。