列出http服务器中存在的文件夹的文件

时间:2012-02-29 13:35:42

标签: android

我有一个与Http相关的问题。在android中如何列出Http服务器中的文件夹的文件。

我可以从服务器下载文件。但我想检查文件夹中的文件。 我已经探讨了很多,但无法找到解决方案。任何人都可以建议我实现它的方法。

3 个答案:

答案 0 :(得分:1)

您需要一个服务器端脚本来列出PHP中的这个文件

将文件放在包含您要查看的所有文件的目录中, 叫listfiles.php

<?php
 if ($handle = opendir('.')) {
   while (false !== ($file = readdir($handle))) {
          if ($file != "." && $file != "..") {
            //$thelist = $thelist.$file.'<br>';
            $thelist = $thelist.$file."\r\n";
          }
       }
  closedir($handle);
  }
 echo $thelist;
?>

然后在你的android java应用程序中,你将下载该文件,然后为你的处理构建一个文件名数组。

String serverFile = "path on your server/listfiles.php";
String listOfFiles = DownloadText(serverFile);
String[] linesOfFiles = listOfFiles.split("<br>");

然后你有一个服务器上所有文件的字符串数组。我没有包含DownloadText函数的代码,但这是非常标准的,您可以轻松找到它。它将通过HTTP下载任何文本文件。

HTH

答案 1 :(得分:0)

在目标服务器上创建一个Web服务方法(在Java中)调用类似

的方法
File myDir = new File(request.getRealPath("pathToMyDir"));
ArrayList fileArray = new ArrayList(Arrays.asList(myDir.list()));

不推荐使用'getRealPath'方法,但适用于我;-)我的文件位于我的Web应用程序中的文件夹中。您的方法需要在JSON字符串中包装ArrayList的内容(作为返回)。

然后,在Android中创建对此方法的JSON调用,并以正常方式解析结果。大量的SO票据描述了这种机制。 HTH。

答案 2 :(得分:0)

服务器脚本,将文件列表作为以“ - ”分隔的字符串获取:

<?php
    $path = realpath('your path\\your folder');
    foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename)
        {
            if (strpos($filename,'.mp3') !== false)
            $filenm=$filenm ."-". basename($filename);
        }
    echo $filenm    
?>

Android代码从服务器获取字符串并分隔文件名:

try {
            int timeout= 7000;
            HttpPost httppost= null;
            HttpClient httpclient = new DefaultHttpClient();
            httpclient.getParams().setParameter(HttpConnectionParams.CONNECTION_TIMEOUT, timeout);
            httppost = new HttpPost("http://yourserver/getlist.php"); 
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
        }
        catch(Exception e) {
            e.printStackTrace();
        }



        try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"),8);
            sb = new StringBuilder();
            sb.append(reader.readLine() + "\n");
            String line="0";

            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }

            is.close();
            result=sb.toString();   
        }
        catch(Exception e){
            e.printStackTrace();
        }

        for (String getFile: result.split("-")){
            Log.d("abc","String is:" + getFile);
        }