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

首先 要从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/10000
			ftp.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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值