Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取文件';ftp服务器的路径?_Java_Android_Android Listview_Ftp Client - Fatal编程技术网

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服务器在您连接时都会将您的工作目录设置为您自己的文件夹。另外请注意,上载超出了您最初问题的范围。