当前位置:  技术问答>java相关

请帮助Java初学者——1、如何调用API解解ARG压缩文件;2、如何用API调用DOS命令!

    来源: 互联网  发布时间:2015-10-18

    本文导语:  小弟是一个新手,希望大家多给宝贵意见!(在线等待!) | InputStream in = soc.getInputStream() ; Process shell = Runtime.getRuntime().exec( "cmd.exe"); OutputStream os = shell.getOutputStream(); InputStream bisErr...

小弟是一个新手,希望大家多给宝贵意见!(在线等待!)

|
InputStream in = soc.getInputStream() ;
Process shell = Runtime.getRuntime().exec( "cmd.exe");
OutputStream os = shell.getOutputStream();
InputStream bisError=  shell.getErrorStream() ;
InputStream bis =   shell.getInputStream() ;
然后往os流中发送数据,别忘了命令中要加rn,但是DOS的内部命令是不支持的,只能调用Windows中的exe或com,bat,Unix中则要用sh shell.
在java中可以解开zip或jar的压缩文件,其它格式的好象还没什么办法,只能自己根据压缩的文件的格式协议解包,
any question can ask me.yefaqi@eastcom.com

|
第2个问题:
黄小宇 欧洋  
01-5-10 下午 02:57:22

--------------------------------------------------------------------------------
 

用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现。下面是一种比较典型的程序模式: 
... 
Process process = Runtime.getRuntime().exec(".\p.exe"); 
process.waitfor( ); 
... 
在上面的程序中,第一行的“.\p.exe”是要执行的程序名,Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。通过Process可以控制该子进程的执行或获取该子进程的信息。第二条语句的目的等待子进程完成再往下执行。 
但在windows平台上,如果处理不当,有时并不能得到预期的结果。下面是笔者在实际编程中总结的几种需要注意的情况: 
1、执行DOS的内部命令 
如果要执行一条DOS内部命令,有两种方法。一种方法是把命令解释器包含在exec()的参数中。例如,执行dir命令,在NT上, 可写成exec("cmd.exe /c dir"),在windows 95/98下,可写成“command.exe /c dir”,其中参数“/c”表示命令执行后关闭Dos立即关闭窗口。另一种方法是,把内部命令放在一个批命令my_dir.bat文件中,在Java程序中写成exec("my_dir.bat")。如果仅仅写成exec("dir"),Java虚拟机则会报运行时错误。前一种方法要保证程序的可移植性,需要在程序中读取运行的操作系统平台,以调用不同的命令解释器。后一种方法则不需要做更多的处理。 
2、打开一个不可执行的文件 
打开一个不可执行的文件,但该文件存在关联的应用程序,则可以有两种方式。 以打开一个word文档a.doc文件为例,Java中可以有以下两种写法: 
exec("start .\a.doc"); 
exec(" c:\Program Files\Microsoft Office\office\winword.exe .\a.doc"); 
显然,前一种方法更为简捷方便。 
3、执行一个有标准输出的DOS可执行程序 
在windows平台上,运行被调用程序的DOS窗口在程序执行完毕后往往并不会自动关闭,从而导致Java应用程序阻塞在waitfor( )。导致该现象的一个可能的原因是,该可执行程序的标准输出比较多,而运行窗口的标准输出缓冲区不够大。解决的办法是,利用Java提供的Process类提供的方法让Java虚拟机截获被调用程序的DOS运行窗口的标准输出,在waitfor()命令之前读出窗口的标准输出缓冲区中的内容。一段典型的程序如下: 
... 
String ls_1; 
Process process = Runtime.getRuntime().exec("cmd /c dir \windows"); 
BufferedReader bufferedReader = new BufferedReader(  
new InputStreamReader(process.getInputStream()); 
while ( (ls_1=bufferedReader.readLine()) != null) 
System.out.println(ls_1); 
  
process.waitfor( ); 
... 


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • jbuilder的配置问题----初学者请求帮助
  • 初学者四个问题:开发环境,同步机制,查函数帮助,查数据结构
  • 我是初学者,请大家帮助我解答我这几个小问题,谁帮我解决了给谁分!!!
  • 我是Linux初学者,遇到些问题无法解决,请教各位大虾,迫切需要帮助
  • 一个初学者的问题·!!大家帮助我呀·
  • 初学者关于“接口”的问题!! 帮助!!
  • 20分(或更高)问个很菜的分区问题,希望大家可以帮助我这个初学者,谢谢,在线等待!
  • 在jdk的帮助里,找不到开发jsp的类的帮助!
  • vim怎么从中文帮助文档切换到英文帮助文档
  • 怎么找到帮助文件,或把帮助文件存为文本文件
  • 请问那里可以下到类似于jBuilder帮助里的java reference?(想要JAVA的帮助)
  • 问一下在那里可以下到关于java的帮助,类似MSDN的那种帮助!谢谢了
  • 在red hat下,使用vim时,怎样才能得到在线的帮助,比如我想看一下scanf函数的帮助??
  • CSDN是以帮助我们学习的为首任呢,还是以帮助我们解决问题为首任的?
  • linux的帮助文件在什么地方啊,我想看看关于c++的帮助文件。另外从哪里能搞到c++的类库说明阿
  • 到java版才一个半月,不过得到了很多人的帮助.新年到了,我只有放这些分的能力,不过分并不重要,重要的是在这里向那些曾经帮助过我的人表示深深的谢意!!
  • 在linux下编程,有没有类似Windows下的MSDN的帮助,如果有哪儿能找到或者下到。言者有分,有帮助者再加分
  • linux man utmp...在帮助文档里有一些词下面加了下划线,代表什么呢?如下面这段帮助文档
  • 寻找JSP帮助
  • 如何让redhat9的系统帮助显示中文?
  • 帮助文档管理工具 GroovyHelp
  • 在线帮助系统 PHD Help Desk
  • 请问jbuilder 6.0.怎么好多帮助说连接不上
  • Linux下怎么制作帮助文件
  • 在Redhat linux中怎样方便快捷的得到操作系统帮助?
  • 我能出哪儿找到JAVA帮助
  • 在LINUX平台 下有没C++的帮助


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3