`

FTP工具类

 
阅读更多
/**
 * 
 * @author ruanzhiyong6496
 * @version 1.0
 */
public class FtpUtil
{
	private static FTPClient ftpClient = new FTPClient();
	private static Properties prop = System.getProperties();

	static
	{
		try
		{
			InputStream in = FtpUtil.class.getClassLoader()
					.getResourceAsStream("util.properties");
			prop.load(in);
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}

	/**
	 * 私有构造什么也不做仅仅是为了不让别人直接创建一个FtpUtil实例
	 */
	private FtpUtil()
	{

	}

	/**
	 * 登录方法
	 * 
	 */
	private static void login() throws SocketException, IOException
	{
		String server = (String) prop.get("ftp.server");// ftp服务器地址
		int port = Integer.parseInt(prop.get("ftp.port").toString());// ftp服务器端口
		String username = (String) prop.get("ftp.username");// 登录名
		String password = (String) prop.get("ftp.password");// 登录密码
		// 链接到ftp服务器
		ftpClient.connect(server, port);
		System.out.println("连接到ftp服务器:" + server + " 成功");
		System.out.println("开始登录...");
		// 登录.用户名 密码
		ftpClient.login(username, password);
		System.out.println("登录成功.");
	}

	/**
	 * 登出方法
	 * 
	 */
	private static void logout() throws IOException
	{
		if (ftpClient.isConnected())
		{
			ftpClient.disconnect();
		}
		System.out.println("已关闭ftp连接");
	}

	/**
	 * 查找某目录下的文件信息
	 * 
	 */
	public static void listDir(String dir)
	{
		try
		{
			login();
			FTPFile[] files = ftpClient.listFiles(dir);
			System.out.println("目录" + dir + "下的文件:");
			if (files != null)
			{
				for (int i = 0; i < files.length; i++)
				{
					String name = files[i].getName();
					long length = files[i].getSize();
					String readableLength = FileUtils
							.byteCountToDisplaySize(length);
					System.out.println(name + ":\t\t" + readableLength);
				}
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				logout();
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}

	/**
	 * 上传方法
	 * 
	 */
	public static boolean upload(String filePath, String desDir)
	{
		boolean flag = false;
		InputStream in = null;
		try
		{
			login();
			ftpClient.changeWorkingDirectory(desDir);
			int index = filePath.lastIndexOf("/");
			String fileName = filePath.substring(index + 1);
			in = new FileInputStream(new File(filePath));
			flag = ftpClient.storeFile(fileName, in);
			System.out.println("上传文件成功");
		}
		catch (Exception e)
		{
			flag = false;
			System.out.println("上传文件失败");
		}
		finally
		{
			try
			{
				in.close();
				logout();
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
		return flag;
	}

	/**
	 * 下载方法
	 * 
	 */
	public static boolean download(String remoteFile, String localDir)
	{
		int index = remoteFile.lastIndexOf("/");
		String dir = remoteFile.substring(0, index);
		String fileName = remoteFile.substring(index + 1);
		FileOutputStream fos = null;
		InputStream is = null;
		try
		{
			login();
			ftpClient.changeWorkingDirectory(dir);
			// 第一步:设置基本属性
			ftpClient.setBufferSize(1024);
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
			// 第二步:获取远程文件的输入流
			is = ftpClient.retrieveFileStream(remoteFile);
			if (is == null)
			{
				// 如果输入流为空,则表示要下载的远程文件不存在
				System.out.println("要下载的远程文件" + remoteFile + "不存在");
				return false;
			}
			else
			{
				// 如果输入流不为空,则将远程文件的输入流写到本地
				fos = new FileOutputStream(localDir + fileName);
				byte[] buffer = new byte[1024];
				int i = -1;
				while ((i = is.read(buffer)) != -1)
				{
					fos.write(buffer, 0, i);
				}
				System.out.println("下载文件成功");
				return true;
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
			System.out.println("下载文件失败");
		}
		finally
		{
			// 关闭输入输出流
			IOUtils.closeQuietly(is);
			IOUtils.closeQuietly(fos);
			try
			{
				logout();
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
		return true;
	}

	/**
	 * 删除指定文件方法
	 * 
	 */
	public static boolean delFile(String filePath)
	{
		try
		{
			login();
			ftpClient.deleteFile(filePath);
			int status = ftpClient.getReplyCode();
			if (status == 550)
			{
				System.out.println("文件" + filePath + "不存在");
				return false;
			}
			else if (status == 250)
			{
				System.out.println("成功删除FTP服务器中文件" + filePath);
				return true;
			}
		}
		catch (IOException e)
		{
			e.printStackTrace();
			System.out.println("删除FTP服务器中文件" + filePath + "失败");
		}
		finally
		{
			try
			{
				logout();
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
		return true;
	}
}

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics