Java程序不适用于Solaris上的ftp。

时间:2011-01-28 07:54:35

标签: java ftp solaris

我编写了一个简单的java应用程序来处理FTP。它在Windows和Linux上运行良好,但在Solaris上挂起。这是源代码:

import java.io.*;
import java.net.*;

public class ftp_try {

public static void main(String[] args) {
    final String hlpurl = "ftp://<user>:<pass>@host/../../some_path/some_file";
    try {
        URL url = new URL(hlpurl);
        final URLConnection con = url.openConnection();
        final int remoteSize = con.getContentLength();
        System.out.println("connection: " + con.toString());
        System.out.println("remote size:" + remoteSize);
        System.out.println("closing connection");
        con.getInputStream().close();
        System.out.println("connection closed");
        System.in.read();
       }
    catch ( MalformedURLException exp) {
            System.out.println("1");
       }
    catch (IOException exp) {
           System.out.println(2);
       }
    }
  }

问题是在Solaris上,我的程序在

之后挂起

System.out.println("closing connection");

你能帮我找出原因吗?

PS:JDK是java 6 SE u 23


更新:如果对那些遇到同样问题的人有任何帮助。我找到了一点解决方法: 从连接中读取所有可用字节,然后您可以关闭它。 像这样:

byte[] buffer= new byte [con.getInputStream().available()];    
con.getInputStream().read(buffer);

1 个答案:

答案 0 :(得分:0)

您通过在此处阅读标准输入来锁定您的程序:

System.out.println("connection closed");
System.in.read(); // <-- here

如果按任意键,程序将完成