第一个你看看这个包里面,有没有你要用的
import org.apache.commons.net.ftp.*;
我做的是从ftp上读取文件,DataConst是我定义常数的类,其他我没仔细研究过,希望有帮助
                ftpClient = new FTPClient();                ftpClient.connect(DataConst.FTPSERVER);                reply = ftpClient.getReplyCode();                if (!FTPReply.isPositiveCompletion(reply)) {
                    ftpClient.disconnect();
                    return null;
                }                if (!ftpClient.login(DataConst.FTPUSER,DataConst.FTPPASSWORD) {
                    ftpClient.disconnect();
                    return null;
                }                ftpClient.enterLocalPassiveMode();                inStreamReader = new InputStreamReader(ftpClient.
                    retrieveFileStream(dataFile), "EUC-JP");

解决方案 »

  1.   

    谢谢  xxisxx(xx)  ? 我已经用 sun ftpClient类 做一个上传和下载的例子.   
    但不知道 怎样Java获取linux host上各分区磁盘剩余空间?
      

  2.   

    如何获得可用的硬盘空间? 目前尚未发现有任何干净利落的纯Java方法能够解决这个问题。通常的解 决方案是直接访问操作系统获得这些信息。有一个被称为JConfig的类库提 供了一些方法可以获得磁盘和文件信息,但是可以肯定这个类库使用了JNI 方法。 下载地址:http://www.tolstoy.com/samizdat/jconfig.html 如果你使用的是晕倒死系列操作系统,那么下面的方法也许能够获得正确 的结果。我之所以说也许,是因为我在多个晕倒死平台上作过实际测试, 在英文版的晕倒死上基本上都能够得到正确的结果,在中文版的晕倒死上 基本上都不能够获得正确的结果。 String osname = System.getProperty("os.name"); String command = ""; if (osname.indexOf("NT") > -1) command = "c:\\winnt\\System32\\cmd.exe"; else if (osname.indexOf("Windows") > -1) command = "c:\\windows\\command.com"; Process p = Runtime.getRuntime().exec( command + " /c dir > c:\\dir.txt"); p.waitFor(); 然后你需要做的是对得到的dir.txt文件进行分析。 如果你使用的是UNIX/Linux操作系统,你可以使用类似的方法来获得相关 信息。建议使用的命令是df -k > dir.txt。
      

  3.   

    Java技巧:使用Runtime.exec重定向本地程序调用 作者: BUILDER.COM
    Tuesday, December 31 2002 11:58 AM 
     Java具有使用Runtime.exec对本地程序调用进行重定向的能力,但是用重定向或者管道进行命令调用将会出错。解决这一问题的办法是通过命令shell运行命令。在Java中调用本地程序会破坏平台独立性规则,但是经常需要这么做才行。 以下是一个简单类的范例,展示了在Unix下运行ls命令的情形:import java.io.BufferedInputStream;
    import java.io.IOException;public class ExecLs {    static public void main(String[] args) {
            String cmd = "ls"        try {
                Process ps = Runtime.getRuntime().exec(cmds);
                System.out.print(loadStream(ps.getInputStream()));
                System.err.print(loadStream(ps.getErrorStream()));
            } catch(IOException ioe) {
                ioe.printStackTrace();
            }
        }    // read an input-stream into a String
        static String loadStream(InputStream in) throws IOException {
            int ptr = 0;
            in = new BufferedInputStream(in);
            StringBuffer buffer = new StringBuffer();
            while( (ptr = in.read()) != -1 ) {
                buffer.append((char)ptr);
            }
            return buffer.toString();     }} 
     
    上述代码中重要的部分是exec方法和命令字符串ls。本程序将输出运行目录下的列表细节。那么,如果你想重定向这些细节内容到文件该怎么办?这一命令行的输入应该写成ls > FILE,但是当你将cmd变量改变成这样的话,运行就会出错,如下:/bin/ls: >: No such file or directory
    /bin/ls: FILE: No such file or directory 出错的原因在于额外的参数被直接传送到了ls命令而不是送到实际的命令行。解决这一问题的办法是将cmd串弄成一个字符串数组,并且将你想运行的程序传送到命令shell。因此,将cmd行改成下面的样子: String[] cmd = { "sh", "-c", "ls > FILE" }; 你将得到一个名为FILE的文件,里面是目录列表。-c参数是告诉它读取随后的字符串,而最后的参数是你要运行的脚本。在这种情况下,管道也运行良好,所以你可以把命令改成下面的方式:String[] cmd = { "/bin/sh", "-c", "/bin/ls | grep d > FILE" }; 这种形式将给你一个名为FILE的文件,里面是ls条目中包含d的条目。给出sh和ls的全路径有利于提供你的程序的安全性。虽然使用Runtime.exec不是创建独立于平台的Java的最佳方式,但是有些时候是必要的。使用这种重定向技术有助于走出Runtime.exec的限制。
     
      

  4.   

    谢谢  hailang_zh(我是一个小兵)的文章, 我在试一下。从文章上看 只是间接取得磁盘空间,不是直接确定。不过还是能实现。 看大家还有没有建议》