已知linux服务器的用户名、密码。java怎么连接远程linux,并用java操作linux中的文件。最好给出代码。

解决方案 »

  1.   

    如果linux装了ftp服务,就用ftp。
    没有的话,就用sftp ,把ssh服务开启就行了。
    使用方法:先通过 connect()方法 得到一个ChannelSftp 对象。其他所有的方法都需要参数 ChannelSftp 
    package com.sftp;/*
     * Created on 2009-9-14
     * Copyright 2009 by www.xfok.net. All Rights Reserved
     *
     */import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.Properties;
    import java.util.Vector;import com.jcraft.jsch.Channel;
    import com.jcraft.jsch.ChannelSftp;
    import com.jcraft.jsch.ChannelSftp.LsEntry;
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.Session;
    import com.jcraft.jsch.SftpException;/**
     * @author YangHua
     * 转载请注明出处:http://www.xfok.net/2009/10/124485.html
     */
    public class SFTPUtils {
    /**
     * 连接sftp服务器
     * @param host 主机
     * @param port 端口
     * @param username 用户名
     * @param password 密码
     * @return
     */
    public ChannelSftp connect(String host, int port, String username,
    String password) {
    ChannelSftp sftp = null;
    try {
    JSch jsch = new JSch();
    jsch.getSession(username, host, port);
    Session sshSession = jsch.getSession(username, host, port);
    System.out.println("Session created.");
    sshSession.setPassword(password);
    Properties sshConfig = new Properties();
    sshConfig.put("StrictHostKeyChecking", "no");
    sshSession.setConfig(sshConfig);
    sshSession.connect();
    System.out.println("Session connected.");
    System.out.println("Opening Channel.");
    Channel channel = sshSession.openChannel("sftp");
    channel.connect();
    sftp = (ChannelSftp) channel;
    System.out.println("Connected to " + host + ".");
    } catch (Exception e) {
    e.printStackTrace() ;
    }
    return sftp;
    } /**
     * 上传文件
     * @param directory 上传的目录
     * @param uploadFile 要上传的文件
     * @param sftp
     */
    public void upload(String directory, String uploadFile, ChannelSftp sftp) {
    try {
    sftp.cd(directory);
    File file=new File(uploadFile);
    sftp.put(new FileInputStream(file), file.getName());
    } catch (Exception e) {
    e.printStackTrace();
    }
    } /**
     * 下载文件
     * @param directory 下载目录
     * @param downloadFile 下载的文件
     * @param saveFile 存在本地的路径
     * @param sftp
     */
    public void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp) {
    try {
    sftp.cd(directory);
    File file=new File(saveFile);
    sftp.get(downloadFile, new FileOutputStream(file));
    } catch (Exception e) {
    e.printStackTrace();
    }
    } /**
     * 删除文件
     * @param directory 要删除文件所在目录
     * @param deleteFile 要删除的文件
     * @param sftp
     */
    public void delete(String directory, String deleteFile, ChannelSftp sftp) {
    try {
    sftp.cd(directory);
    sftp.rm(deleteFile);
    } catch (Exception e) {
    e.printStackTrace();
    }
    } /**
     * 列出目录下的文件
     * @param directory 要列出的目录
     * @param sftp
     * @return
     * @throws SftpException
     */  
    @SuppressWarnings("unchecked")
    public Vector<LsEntry> listFiles(String directory, ChannelSftp sftp) throws SftpException{
    return sftp.ls(directory);
    }}
      

  2.   

    哦。 忘记说了依赖jar包:jsch-0.1.43.jar下载地址http://www.jcraft.com/jsch/
      

  3.   

    用一个java ssh client 比如 JSch