"     但我在 java 程序中执行以下三句         Process p = Runtime.getRuntime().exec("ftp");         InputStream in = p.....">

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

高手救命!Runtime.exec("ftp") 然后从 Process.getInputStream() 里面读,为何读不到东西

    来源: 互联网  发布时间:2015-11-08

    本文导语:  问题一:     当在 dos 窗口下输入 ftp ,会马上出现提示符 "ftp>"     但我在 java 程序中执行以下三句         Process p = Runtime.getRuntime().exec("ftp");         InputStream in = p.getInputStream();         while( (i=in....



问题一:
    当在 dos 窗口下输入 ftp ,会马上出现提示符 "ftp>"
    但我在 java 程序中执行以下三句
        Process p = Runtime.getRuntime().exec("ftp");
        InputStream in = p.getInputStream();
        while( (i=in.read())!=-1 ) System.out.write(i);
    结果没有读到预期的 "ftp>" ,怎么回事?
    
问题二:
    我猜可能是因为 Process.getInputStream() 返回的是 BufferedInputStream ,
    那么有没有办法从 BufferedInputStream 得到一个不使用缓冲的 InputStream ?

问题三:
    其实是要完成这样一个功能:把用户的输入传给 ftp ,再把 ftp 的显示结果显示给用户看,请问谁有过成功经验吗?




我的程序如下:
import java.io.*;
class r {
public static void main(String[] args) throws Exception {
    Process p = Runtime.getRuntime().exec("ftp");
    final OutputStream out = p.getOutputStream();
    final InputStream in = p.getInputStream();
    final InputStream err = p.getErrorStream();


    new Thread() {
        public void run() { try {
            int i;
            while( (i=in.read())!=-1 ) { System.out.println(s); System.out.flush(); }
            System.exit(0);
        } catch( Exception e ) { e.printStackTrace(); System.exit(-1); } }
    }.start();


    new Thread() {
        public void run() { try {
            int i;
            while( (i=err.read())!=-1 ) { System.out.write(i); System.out.flush(); }
            System.exit(0);
        } catch( Exception e ) { e.printStackTrace(); System.exit(-1); } }
    }.start();


    int i;
    while( (i=System.in.read())!=-1 ) { out.write(i); out.flush(); }
    System.exit(0);
}
}

|
呵呵,搞不定,好像ftp的命令就是不行。你参考一下以下代码。
            BufferedReader in = new BufferedReader(new InputStreamReader(this.in));
            try
            {
                for(String line = in.readLine(); line != null; line = in.readLine())
                {
                    for(int tabIndex = line.indexOf("t"); tabIndex >= 0; tabIndex = line.indexOf("t"))
                    {
                        line = line.substring(0, tabIndex) + "    " + line.substring(tabIndex + 1);
                    }

                    append(line + "n");
                    scrollToBottom();
                }

            }
            catch(IOException e)
            {
                append("IOException: " + e);
            }

|
是你对这3个流的使用有错误,你去
http://www-900.ibm.com/developerWorks/cn/java/index.shtml
找一个关于流的重定向的文章看。

|
gz

    
 
 

您可能感兴趣的文章:

  • 请教高手:在request对象中取得multipart/form-data格式的二进制数据是不是用request.getInputStream呀?
  • 救命呀,高手请进来救命呀!
  • 高手救命,很急——ORACLE817安装在UNIXWARE711上,手工启动数据库后在netasst中连接错误,高手帮我看看?
  • Socket弱弱地问!!高手救命
  • 高手救命啊
  • 关于文件的传输问题,搞了一天了,请高手救命!
  • 懂unix shell、oracle的高手,救命啊!!!
  • 救命,linux或solaris高手请进!
  • 请高手进来救命!!!
  • JAVA高手救命,如何对JSP程序进行错误控制!
  • 救命~~求助~~iptables高手请进
  • 各位高手救命呀!(急,在线等候)
  • 高手们救命啊!怎么在SUSE Linux下共享Eclipse开发环境?
  • 救命啊,高手解答,分不够再加
  • linux高手救命
  • (请高手救命啊!在线等)Socket Send的时候,不停的得到EINTR错误返回, 请问是为什么?
  • 高手救命,linux下C++,多线程问题
  • 救命!!!!!安装ORACLE初级问题!各位高手帮帮忙!
  • 高手救命!在线等后!
  • 救教Red Hat 5.2 下配置XMANAGE连接的方法!高手救命呀~~
  • 高手救命:关于Applet图形的问题(附源代码),请帮忙看一下
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • cacti监控不到磁盘数据,请高手指教!
  • !!SATA硬盘安装FC4,找不到硬盘 请高手进来解答
  • 我找不到全向"秋池飞叶"(modem)的redhatlinux8.0驱动,请高手指点
  • VMware下装了gentoo linux,但是找不到光驱,根本没有/mnt的目录,请高手指点
  • jsp中找不到表的错误,急!!!请高手指教。
  • 各位linux的高手,小弟有个简单问题.lunix找不到了?
  • vim打开动态库文件会乱码,怎么打开,百度了都找不到合适的解决,求高手??????
  • 救我救救我,高手指点,我真的找不到原因了heartbeat起不来了
  • 我在linux下可以看到win2000下ntfs格式中的英文文件夹,可是却看不到中文的,还请高手帮忙.
  • 期待高手:关于udp的sendto,发给本机ip,为什么我抓不到包?
  • 我装了Solaris后,98和2000都找不到了,启动时直接进入Solaris,该怎么办,请高手指点!
  • 关于linux下好多文件看不到.......怪...........(请教高手)贴者有分
  • 在安装了Win2003后再装Red Hat 9时系统提示找不到硬盘驱动器?请教各位高手.
  • 请教高手装了Linux系统找不到系统盘(在线等)
  • 我中了sircam病毒,我的系统是win2000(ntfs),在windos下杀不掉,我想用瑞星启动去杀,但是好像看不到ntfs分区,请高手指点
  • Windows 2000下找不到samba服务器,高手指点!
  • linux 验证客户端登录 socket得不到数据!! 急求高手帮忙!!!
  • 以前的一个老问题,但是查不到结果,请知道答案的高手指点一下,谢谢!
  • 一个特简单(对诸位高手来讲)但我至今却未解决的问题,望关注----程序测试时老提示说找不到运行环境,咋整的???
  • 想不到一个小问题也能憋倒英雄汉(就算我是吧,呵呵!)高手欢迎!
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由


  • 站内导航:


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

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

    浙ICP备11055608号-3