用java怎么获取ftp上的文件
发布网友
发布时间:2022-05-05 13:43
我来回答
共1个回答
热心网友
时间:2022-06-27 14:05
public class FtpClientUtil {
FtpClient ftpClient;
private String server;
private int port;
private String userName;
private String userPassword;
public FtpClientUtil(String server,int port,String userName,String userPassword)
{
this.server=server;
this.port=port;
this.userName=userName;
this.userPassword=userPassword;
}
/**
* 链接到服务器
* @return
*/
public boolean open()
{
if(ftpClient!=null&&ftpClient.serverIsOpen())
return true;
try
{
ftpClient= new FtpClient();
ftpClient.openServer(server,port);
ftpClient.login(userName, userPassword);
ftpClient.binary();
return true;
}
catch(Exception e)
{
e.printStackTrace();
ftpClient=null;
return false;
}
}
public boolean cd(String dir){
boolean f = false;
try {
ftpClient.cd(dir);
} catch (IOException e) {
Logs.error(e.toString());
return f;
}
return true;
}
/**
* 上传文件到FTP服务器
* @param localPathAndFileName 本地文件目录和文件名
* @param ftpFileName 上传后的文件名
* @param ftpDirectory FTP目录如:/path1/pathb2/,如果目录不存在回自动创建目录
* @throws Exception
*/
public boolean upload(String localDirectoryAndFileName,String ftpFileName,String ftpDirectory)throws Exception {
if(!open())
return false;
FileInputStream is=null;
TelnetOutputStream os=null;
try
{
char ch = ' ';
if (ftpDirectory.length() > 0)
ch = ftpDirectory.charAt(ftpDirectory.length() - 1);
for (; ch == '/' || ch == '\\'; ch = ftpDirectory.charAt(ftpDirectory.length() - 1))
ftpDirectory = ftpDirectory.substring(0, ftpDirectory.length() - 1);
int slashIndex = ftpDirectory.indexOf(47);
int backslashIndex = ftpDirectory.indexOf(92);
int index = slashIndex;
String dirall = ftpDirectory;
if (backslashIndex != -1 && (index == -1 || index > backslashIndex))
index = backslashIndex;
String directory = "";
while (index != -1) {
if (index > 0) {
String dir = dirall.substring(0, index);
directory = directory + "/" + dir;
ftpClient.sendServer("XMKD " + directory + "\r\n");
ftpClient.readServerResponse();
}
dirall = dirall.substring(index + 1);
slashIndex = dirall.indexOf(47);
backslashIndex = dirall.indexOf(92);
index = slashIndex;
if (backslashIndex != -1 && (index == -1 || index > backslashIndex))
index = backslashIndex;
}
ftpClient.sendServer("XMKD " + ftpDirectory + "\r\n");
ftpClient.readServerResponse();
os = ftpClient.put(ftpDirectory + "/"
+ ftpFileName);
File file_in = new File(localDirectoryAndFileName);
is = new FileInputStream(file_in);
byte bytes[] = new byte[1024];
int i;
while ((i = is.read(bytes)) != -1)
os.write(bytes, 0, i);
//清理垃圾
return true;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
finally
{
if (is != null)
is.close();
if (os != null)
os.close();
}
}
/**
* 从FTP服务器上下载文件并返回下载文件长度
* @param ftpDirectoryAndFileName
* @param localDirectoryAndFileName
* @return
* @throws Exception
*/
public long download(String ftpDirectoryAndFileName,String localDirectoryAndFileName)throws Exception
{
long result = 0;
if(!open())
return result;
TelnetInputStream is = null;
FileOutputStream os = null;
try
{
is = ftpClient.get(ftpDirectoryAndFileName);
java.io.File outfile = new java.io.File(localDirectoryAndFileName);
os = new FileOutputStream(outfile);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1)
{
os.write(bytes, 0, c);
result = result + c;
}
}
catch (Exception e)
{
throw e;
}
finally
{
if (is != null)
is.close();
if (os != null)
os.close();
}
return result;
}
/**
* 返回FTP目录下的文件列表
* @param ftpDirectory
* @return
*/
public List<String> getFileNameList(String ftpDirectory)
{
List<String> list = new ArrayList<String>();
if(!open())
return list;
try
{
DataInputStream dis = new DataInputStream(ftpClient.nameList(ftpDirectory));
String filename = "";
while((filename=dis.readLine())!=null)
{
list.add(filename);
}
} catch (Exception e)
{
e.printStackTrace();
}
return list;
}
/**
* 删除FTP上的文件
* @param ftpDirAndFileName
*/
public boolean deleteFile(String ftpDirAndFileName)
{
if(!open())
return false;
ftpClient.sendServer("DELE "+ftpDirAndFileName+"\r\n");
return true;
}
/**
* 删除FTP目录
* @param ftpDirectory
*/
public boolean deleteDirectory(String ftpDirectory)
{
if(!open())
return false;
ftpClient.sendServer("XRMD "+ftpDirectory+"\r\n");
return true;
}
/**
* 关闭链接
*/
public void close()
{
try
{
if(ftpClient!=null&&ftpClient.serverIsOpen())
ftpClient.closeServer();
}catch(Exception e)
{
}
}
}望采纳,谢谢。
如何 用Java 实现 获取FTP服务器上的所有文件名,已知FTP的密码,用户名...
public void ftpJdomFile(String dir) throws FileNotFoundException, IOException{ //创立根节点 //下面这个方法是列出指定目录下的所有文件和文件夹 List dirslist=Arrays.asList(new File(dir).listFiles());for (Iterator i = dirslist.iterator(); i.hasNext();) { // System.out.prin...
用java怎么获取ftp上的文件
public class FtpClientUtil { FtpClient ftpClient;private String server;private int port;private String userName;private String userPassword;public FtpClientUtil(String server,int port,String userName,String userPassword){ this.server=server;this.port=port;this.userName=userName;this.userPassw...
用JAVA编写一个程序实现输出我的电脑上建立的FTP服务器根目录下的所有...
File files[]=file.listFiles();for(int i=0;i<files.length;i++){ System.out.println(files[i].getName() );} 如果要获取所有的文件和文件夹可以使用String[] list()方法。返回的是String类型的数组,其中所有文件和文件夹的相对路径表示。补充--- 如果那样的话那么就需要在你的ftp服务器...
java 怎么从ftp获取文件路径
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.io.RandomAccessFile;import org.apache.commons.net.PrintCommandListener;import org.apache.commons.net.ftp.FTP;import org.apache.c...
java怎么在ftp上取到文件夹中文件再录入txt文本
http://www.codejava.net/java-se/networking/ftp/java-ftp-file-download-tutorial-and-example 这个文档非常好。有什么看不懂的再问吧。主要是使用 org.apache.commons.net.ftp.FTPClient 和 org.apache.commons.net.ftp.FTP 类。核心代码:ftpClient.connect(server, port); ftpClient.login(u...
请问一下,java中有没直接判断ftp上文件夹下是否存在某文件的方法?通过...
第一个种方法 :org.apache.commons.net.ftp.* 看这个目录下是否有你要的方法 第二种方法:package com.soft4j.log4j;import java.io.IOException;import sun.net.ftp.FtpClient;public class FtpTest { static String middle_ftpServer = "10.103.2.250";static String middle_user = "ora9i...
java连接ftp在线读取文件,不下载文件直接读 怎么读 求代码
因此那些直接在线读取文件内容的要求应该是先下载到本地,然后读取本地文件的内容。当然,你也可以仿照FTP的协议发送对应的指示到服务器,直接把服务器返回的信息放到缓存里(以前做过,忘记了),这样可以避免生成文件,不过这个就要详细了解ftp协议和socket编程才行。
我安装了JRE1.6版本,如何在记事本中写一个简单的java程序,下载FTP服务器...
//比如要下载ftp://ftp.xx.com/index.html则:import sun.net.ftp.FtpClient;import java.io.*;import sun.net.*;/ Title: Description: Copyright: Copyright (c) 2004 Company: author petehero version 1.0 / public class ftpDown { public ftpDown(){ } public static void main(S...
求每日定时在服务器的FTP上取数据文件的源码(JAVA)
import java.io.*;import java.net.*;public class FtpClient { public static void main(String[] args) { if(args.length==0) { System.out.println("Usage:java FtpClient file_path");System.exit(0);} File file=new File(args[0]);if(!file.exists()||!file.canRead()) { Syste...
...文件考到另一个ftp的目录的某个文件夹下用java代码实现
你先登录ftp2调用ftp1,ftpClient1.changeWorkingDirectory(path);InputStream inputStream = ftpClient1.retrieveFileStream(file.getName());用这个代码应该可以从ftp1中获得一个inputStream ,在ftp2中可以做上传操作 目录的话ftp2还要做递归存放到list中,ftp2遍历上传. 其实我也没做这个,希望思路有点...