0 0

调用java代码重定向输入输出的问题10

用java调用java代码时想输出参数给所要调用的代码该怎么做,例如调用如下代码怎么重定向输入输出:
import java.util.Scanner;
public class Product
{
public static void main(String[] args)
{
int n;
         Product pTest = new Product();
                  Scanner sc=new Scanner(System.in);
                  System.out.print("请输入一个数:");
                  n=sc.nextInt();
                  pTest.productOfint(n);
}
public void productOfint(int i)
{
System.out.print(i*i);
}
}

我现在只能将被调用代码的输出取出,如何将参数传递到被调用代码求高手帮助,谢谢。

我的代码如下:

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;

import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;

public class Compile
{
         public static void main(String[] args)
{
Compile cms = new Compile ();
cms.compileIt();//编译被调用代码
                  cms.RunIt();运行被调用代码
}
public Compile ()
{
}
public String compileIt()
{
String errStr = "", outputStr = "";
String cmd = new String("javac Product.java");// Java的执行命令 
Runtime t1 = Runtime.getRuntime();
try 
{  
Process p = new Process;
Process p =  t1.exec(cmd);
System.out.println("执行命令:" + cmd + "\n");

OutputStream os = p.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeInt(3);

BufferedReader err = new BufferedReader(new InputStreamReader(p.getErrorStream()));// 重定向错误信息  
while ((errStr = err.readLine()) != null)  
{  
System.out.println(errStr + "\n");  
}  
// 重定向输出信息  
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((outputStr = in.readLine()) != null)  
{  
System.out.println(outputStr + "\n");  
}
}  
catch (IOException e1)  
{  
e1.printStackTrace();  
}  
return outputStr;
}

public String RunIt()
{
String s = "";  
String cmd = new String("java " + "Product");// Java的执行命令
Runtime rt = Runtime.getRuntime();
try 
{  
Process p = rt.exec(cmd);// 调用进程去执行命令  
System.out.println("执行命令:" + cmd + "\n");// 重定向执行结果  
// 重定向错误信息
BufferedReader err = new BufferedReader(new InputStreamReader(p.getErrorStream()));  
while ((s = err.readLine()) != null)  
{  
System.out.println(s + "\n");  
}  
// 重定向输出信息(将输出的信息存放到jta1中显示出来)  
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));  
while ((s = in.readLine()) != null)  
{  
System.out.println( s + "\n");  
}  
}  
catch (Exception eee)  
{  
eee.printStackTrace();  
}
return s;
}
}

在RunIt()中不知道怎么给被调用代码传递i值

请高手多多指导,谢谢了!

问题补充:
OpenMind 写道
可以通过"java Product p1 p2 p3"这种方式传入参数吧

请问这里的p1 p2 p3指什么,是输入的参数吗?

问题补充:
liuqing_2010_07 写道
请问这里的p1 p2 p3指什么,是输入的参数吗?


指的是Parameter 1 和 Parameter  1 。。。。参数列表。

我试了但是得不到结果, 麻烦兄台给讲详细点

问题补充:
liuqing_2010_07 写道
你运行时报什么错了 ?

没报错,就是得不到结果

问题补充:
OpenMind 写道
看你的代码,好像dos.writeInt(3);的i=3会被Product 的Scanner扫描到...

这个能详细一点吗?dos是什么

问题补充:
liuqing_2010_07 写道
不应该呀 应该报错。
引用

指的是Parameter 1 和 Parameter  1 。。。。参数列表。


这个先前是 OpenMind提出来 你问时 我看他的意思应该是 参数列表 要不
明天 向这位高人 请教请教 。 依我看来 这位高人 瞎猜的吧 要动态传入参数 不能
写成字符串 写死。

呵呵,写倒是可以写,用+也不会写死,但是不知道怎么用呀?明天问问他,不过还是要谢谢您
2012年1月07日 16:25

6个答案 按时间排序 按投票排序

0 0

不应该呀 应该报错。

引用

指的是Parameter 1 和 Parameter  1 。。。。参数列表。


这个先前是 OpenMind提出来 你问时 我看他的意思应该是 参数列表 要不
明天 向这位高人 请教请教 。 依我看来 这位高人 瞎猜的吧 要动态传入参数 不能
写成字符串 写死。

2012年1月07日 22:31
0 0

你运行时报什么错了 ?

2012年1月07日 21:25
0 0

请问这里的p1 p2 p3指什么,是输入的参数吗?


指的是Parameter 1 和 Parameter  1 。。。。参数列表。

2012年1月07日 19:52
0 0

我试了 怎么 Scanner 没有扫描到?

2012年1月07日 17:03
0 0

看你的代码,好像dos.writeInt(3);的i=3会被Product 的Scanner扫描到...

2012年1月07日 16:57
0 0

可以通过"java Product p1 p2 p3"这种方式传入参数吧

2012年1月07日 16:49

相关推荐

    java代码中调用linux/unix命令

    Apache Commons Exec库提供了一个更高级的API,可以更方便地处理命令执行,如重定向输入、输出和错误流,处理复杂的命令行构造等。 8. **与Shell脚本结合** 有时,单个命令无法满足需求,这时可以编写Shell脚本,...

    Java中重定向输出流实现用文件记录程序日志

    3. **重定向输出流**:调用`System.setOut(ps)`,将`System.out`设置为`ps`,这样所有后续的`System.out.println()`调用都会写入到`log.txt`文件。 ```java System.setOut(ps); ``` 4. **输出日志信息**:然后,...

    java中调用本地exe文件

    它允许指定命令行参数、环境变量以及重定向标准输入/输出流等。 #### 1.2 常见应用场景 - **自动化任务处理**:例如定时执行备份任务、日志清理等。 - **集成外部工具**:比如使用第三方的图形处理软件进行图片转换...

    浅谈输入输出流

    - Java允许将标准输入输出流重定向到其他流中,例如将输出重定向到文件。 ```java System.setOut(new PrintStream(new FileOutputStream("output.txt"))); ``` #### 五、对象序列化 除了基本的数据读写,Java...

    ACM中使用java

    ### ACM竞赛中Java语言的输入输出重定向方法 在ACM竞赛中,使用Java语言进行编程时,常常需要对程序的输入输出进行重定向。这样做的主要目的是为了方便地读取来自文件的数据以及将程序的输出写入到指定的文件中,...

    java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

    5. 获取响应:调用`getInputStream()`获取服务器响应的输入流,然后读取数据。 6. 处理响应:使用`BufferedReader`读取响应内容,并进行解析或处理。 7. 关闭连接:最后,记得关闭输入流和连接以释放资源。 下面...

    Java I/O 标准输入输出流System.in

    在Java编程语言中,I/O(输入/输出)是程序与外部世界交互的重要部分,而标准输入输出流(System.in, System.out, System.err)是Java内置的预定义流,用于处理程序与操作系统之间的基本输入输出操作。这篇博客将深入...

    Java调用Linux命令

    这个子进程没有自己的控制台或终端窗口,其标准输入、标准输出和标准错误都会被重定向到父进程的相应流中。具体来说: - `Process.getOutputStream()`:可以用来向子进程写入数据。 - `Process.getInputStream()`:...

    推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 15.输入输出(共41页).ppt

    输入输出(IO)是任何编程语言中不可或缺的部分,Java也不例外。在这个15章节的IO课程中,你将学习到关于Java IO系统的深度知识。 首先,File类是Java访问文件和目录的主要接口。它允许你创建、删除、重命名文件,...

    Java调用外部程序命令

    当使用Java调用外部程序时,可能会遇到程序无法正常退出的情况,通常这是由于进程的输入/输出流未被正确处理造成的。 - **解决方案1:** 关闭标准输入流 当外部程序等待标准输入时,如果没有关闭标准输入流,会...

    Linux下Java中调用可执行程序

    然后在Java代码中调用这个批处理文件,如`rt.exec("test.bat")`。这样,程序的输出会被重定向到`out`文件。 7. **参数路径问题**: 当可执行程序和参数不在同一路径下时,需要提供完整的参数路径。例如,如果`...

    java调用mysql命令 导入导出数据库

    `>`是重定向符号,将命令的输出(即数据库的SQL脚本)保存到`dump.sql`文件中。 类似地,你可以使用`mysql`命令来导入数据库: ```java import java.io.IOException; public class MySqlImportTool { public ...

    【Code】标准输出重定向到GUI

    本文将详细介绍如何在Java中实现标准输出的重定向,将其从控制台转移到Swing组件。 首先,我们需要理解Java的System类中定义的三个流:`System.out`(标准输出)、`System.err`(标准错误)和`System.in`(标准输入...

    基于JAVA的意外保险接口调用代码实例.docx

    1. `BufferedReader` 和 `DataOutputStream` 用于处理HTTP请求的输入和输出流。 2. `InputStreamReader`, `InputStream` 和 `IOException` 用于读取HTTP响应。 3. `HttpURLConnection` 是Java标准库中的HTTP客户端...

    基于Java+web的在线Java编辑器.pdf

    1. **Java处理命令输入输出流**:在线编辑器通过Java调用`exec`命令执行程序,创建`Progress`对象以实现与程序运行环境的交互。Java的流API允许对输入和输出进行控制,输入流用于读取数据源,输出流则用于写入数据...

    防止sql注入的java代码

    ### 防止SQL注入的Java代码解析 #### 概述 在Web应用程序开发中,SQL注入是一种常见的安全攻击方式,攻击者通过篡改输入数据,插入恶意SQL语句,以此来操纵数据库执行非预期的操作。为了提升系统的安全性,开发者...

    重定向原来介绍

    - 输入输出流的操作通常涉及到标准输入输出设备,例如本例中的`stdin`, `stdout`, `stderr`等。 #### 2. 文件操作 - Servlet还可以用来操作文件系统,例如创建、读取、修改和删除文件。 - 在提供的部分内容中,我们...

    Java反编译工具把.class文件转换为.java文件

    - 输出重定向:用户可以通过管道操作改变输出文件名,如`jad -p example1.class > myexm1.java`。 - 指定输出目录:使用选项`-d`指定输出文件所在的目录,如`jad -d test *.class`将把反编译后的文件存放在名为`...

    基于Java web的在线Java编辑器.pdf

    2. Java处理命令输入输出流:利用Java对流的支持,可以向进程的输入流中写入输入,同时将进程的标准输出重定向保存到字符串中,以便于获取执行结果。 3. 高并发下的文件处理:为了解决Web应用高并发时可能引发的...

    java访问https网址下载文件(含证书)

    4. **打开输入/输出流**: 调用`connect()`方法建立实际的网络连接,然后通过`getInputStream()`获取服务器的响应流,准备下载文件。同时,创建一个本地文件的`FileOutputStream`用于写入接收到的数据。 5. **下载...

Global site tag (gtag.js) - Google Analytics