Java 如何获取文件';ftp服务器的路径?
此代码获取文件名,但我想获取文件路径:Java 如何获取文件';ftp服务器的路径?,java,android,android-listview,ftp-client,Java,Android,Android Listview,Ftp Client,此代码获取文件名,但我想获取文件路径: private List <String> checkFiles(FTPClient clients){ List <String> it = new ArrayList <String>(); try { FTPFile[] ftpFiles = clients.listFiles(); int length = ftpFiles.length;
private List <String> checkFiles(FTPClient clients){
List <String> it = new ArrayList <String>();
try {
FTPFile[] ftpFiles = clients.listFiles();
int length = ftpFiles.length;
for (int i = 0; i < length; i++) {
String name = ftpFiles[i].getName();
Calendar date = ftpFiles[i].getTimestamp();
Log.v("aasd", name );
it.add (name);
}
} catch(Exception e) {
e.printStackTrace();
}
return it ;
}
私有列表检查文件(FTPClient客户端){
List it=newarraylist();
试试{
FTPFile[]ftpFiles=clients.listFiles();
int length=ftpFiles.length;
对于(int i=0;i
路径在客户端,而不是文件中
String path = clients.printWorkingDirectory()
下面的代码查找ftp服务器上任何文件夹中的所有文件路径。 ftpPath类似于“ftpserver/文件夹”。列表包含文件夹中所有文件的路径
public List<string> GetFilesPath(string ftpPath)
{
FtpWebRequest request;
string FtpServerPath = ftpPath;
List<string> filePathList=new List<string>();
try
{
request = WebRequest.Create(new Uri(FtpServerPath)) as FtpWebRequest;
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
request.UseBinary = true;
request.UsePassive = true;
request.KeepAlive = true;
request.Credentials = new NetworkCredential("ftpuser", "ftpPassword");
request.ConnectionGroupName = "group";
Stream rs = (Stream)request.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(rs);
string strList = sr.ReadToEnd();
string[] lines = null;
if (strList.Contains("\r\n"))
{
lines = strList.Split(new string[] { "\r\n" }, StringSplitOptions.None);
}
else if (strList.Contains("\n"))
{
lines = strList.Split(new string[] { "\n" }, StringSplitOptions.None);
}
if (lines == null || lines.Length == 0)
return null;
else{
foreach (string line in lines)
{
if (line.Length == 0)
continue;
int x=line.LastIndexOf(' ');
int len = line.Length;
var str = line.Substring( (x+1), (len - x - 1));
var filePath = FtpServerPath+"/"+str;
filePathList.Add(filePath);
}
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
public List getfilepath(字符串ftpPath)
{
FtpWebRequest请求;
字符串FtpServerPath=ftpPath;
List filePathList=新列表();
尝试
{
request=WebRequest.Create(新Uri(FtpServerPath))作为FtpWebRequest;
request.Method=WebRequestMethods.Ftp.ListDirectoryDetails;
request.UseBinary=true;
request.usesponsive=true;
request.KeepAlive=true;
request.Credentials=newnetworkcredential(“ftpuser”、“ftpPassword”);
request.ConnectionGroupName=“组”;
Stream rs=(Stream)request.GetResponse().GetResponseStream();
StreamReader sr=新的StreamReader(rs);
字符串strList=sr.ReadToEnd();
字符串[]行=null;
if(strList.Contains(“\r\n”))
{
lines=strList.Split(新字符串[]{“\r\n”},StringSplitOptions.None);
}
else if(strList.Contains(“\n”))
{
lines=strList.Split(新字符串[]{“\n”},StringSplitOptions.None);
}
如果(行==null | |行。长度==0)
返回null;
否则{
foreach(行中的字符串行)
{
如果(line.Length==0)
继续;
int x=行。LastIndexOf(“”);
int len=直线长度;
var str=行子串((x+1),(len-x-1));
var filePath=FtpServerPath+“/”+str;
添加(文件路径);
}
}
捕获(例外情况除外)
{
MessageBox.Show(“错误:+ex.Message”);
}
}
假设您的FTPClient
类是org.apache.commons.net.ftp.FTPClient
,则该方法(不带任何参数)返回当前工作目录的文件列表,可以通过.i want path和file ex.“/file1.txt”来查找(如果未知的话)listFiles将只返回当前目录中的文件。这些文件都将位于printWorkingDirectory()返回的路径中。您知道需要什么路径吗?请调用客户端。changeWorkingDirectory(…)在列出文件之前先设置路径。对于类似/file1.txt的文件,路径为/,文件为file1.txt。FTP服务器可能不允许您将内容放入/中,因此在上载时会出现错误。您可能需要类似~youraccountname/file1.txt的内容。如果必须使用o,则必须检查FTP服务器配置中的绝对路径在许多情况下,只使用“file1.txt”会起作用,因为大多数FTP服务器在您连接时都会将您的工作目录设置为您自己的文件夹。另外请注意,上载超出了您最初问题的范围。