读取,下载,linux服务器上的 文件

来源:互联网 发布:网络招打字员是真的吗 编辑:程序博客网 时间:2024/04/30 23:23

首先 要从linux服务器上下载文件的话,第一步:就是通过ftp链接服务器。第二步:才是下载你所需要的内容。

好了知道了 步骤 我们就开始吧

我的需求是从linux服务器中 获取 某个文件夹 目录下 的  图片名称 。

一、通过 ftp 链接 linux服务器

package ftp;import java.io.DataInputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import sun.net.TelnetInputStream;import sun.net.TelnetOutputStream;import sun.net.ftp.FtpClient;public class FtpUtil {private static FtpClient ftpClient=null;/**      * connectServer      * 连接ftp服务器      * @throws java.io.IOException      * @param path 文件夹,空代表根目录 O     * @param password 密码      * @param user    登陆用户      * @param server 服务器地址      */ public void connectServer(String server, String user, String password,  String path) throws IOException  { // server:FTP服务器的IP地址;user:登录FTP服务器的用户名 // password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径 ftpClient = new FtpClient(); ftpClient.openServer(server); ftpClient.login(user, password); //path是ftp服务下主目录的子目录 if (path.length() != 0)   ftpClient.cd(path); //用2进制上传、下载 ftpClient.binary();      }/**    * 取得某个目录下的所有文件列表    *    */ public List getFileList(String path) { List list = new ArrayList(); try  { DataInputStream dis = new   DataInputStream(ftpClient.nameList(path)); String filename = ""; while((filename=dis.readLine())!=null)   {   list.add(filename);         }} catch (Exception e)  { e.printStackTrace(); } return list; }/**  * upload  * 上传文件  * @throws java.lang.Exception  * @return -1 文件不存在  *           -2 文件内容为空   *           >0 成功上传,返回文件的大小  * @param newname 上传后的新文件名  * @param filename 上传的文件  */ public long upload(String filename,String newname) throws Exception  { long result = 0; TelnetOutputStream os = null; FileInputStream is = null; try {          java.io.File file_in = new java.io.File(filename); if (!file_in.exists()) return -1; if (file_in.length()==0) return -2; os = ftpClient.put(newname); result = file_in.length(); is = new FileInputStream(file_in); byte[] bytes = new byte[1024]; int c; while ((c = is.read(bytes)) != -1) { os.write(bytes, 0, c); } } finally { if (is != null) { is.close(); } if (os != null) { os.close(); } } return result; } /**  * upload  * @throws java.lang.Exception  * @return   * @param filename  */ public long upload(String filename) throws Exception  { String newname = ""; if (filename.indexOf("/")>-1) { newname = filename.substring(filename.lastIndexOf("/")+1); }else { newname = filename; } return upload(filename,newname); } /**  *   download  *   从ftp下载文件到本地  * @throws java.lang.Exception  * @return   * @param newfilename 本地生成的文件名  * @param filename 服务器上的文件名  */ public long download(String filename,String newfilename)throws Exception {   long result = 0; TelnetInputStream is = null; FileOutputStream os = null; try  { is = ftpClient.get(filename);        java.io.File outfile = new java.io.File(newfilename); //创建一个 file对象   , 前面的限定符是包路径os = new FileOutputStream(outfile); byte[] bytes = new byte[1024]; int c; while ((c = is.read(bytes)) != -1) { os.write(bytes, 0, c); //将 is.read(bytes) 个字节从指定 byte 数组写入此文件输出流中。result = result + c; } } catch (IOException e)  { e.printStackTrace(); } finally { if (is != null) { is.close(); } if (os != null) { os.close(); } } return result; } /**      * closeServer      * 断开与ftp服务器的链接      * @throws java.io.IOException      */ public void closeServer() throws IOException  {    try  { if (ftpClient != null)  { ftpClient.closeServer();      } } catch (IOException e) { e.printStackTrace(); }}public static void main(String [] args) throws Exception  { FtpUtil ftp = new FtpUtil(); try { //连接ftp服务器 /home/sunshinan/bdpic/10000ftp.connectServer("服务器ip", "服务器账号", "服务器密码", "需要的文件夹路径(直接写路径,不需要加ip因为这相当于已经链接上了服务器)"); /**   上传文件到 info2 文件夹下 */ //System.out.println("filesize:"+ftp.upload("f:/download/Install.exe")+"字节"); /** 取得info2文件夹下的所有文件列表,并下载到 E盘下 */ List list = ftp.getFileList("."); for (int i=0;i<list.size();i++) { String filename = (String)list.get(i); //long a = ftp.download(filename,"E:/cy_mailfile/"+filename); System.out.println(filename);} } catch (Exception e) { e.printStackTrace(); }finally { ftp.closeServer(); } } }

我相信大家一定能看懂这段代码:注视已经写好,

需要注意的是:注意你访问的linux文件的 权限,如果权限不允许 读取或者下载,你一样不能操作。

0 0