Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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
如何在android中访问web目录文件列表_Android_Listview - Fatal编程技术网

如何在android中访问web目录文件列表

如何在android中访问web目录文件列表,android,listview,Android,Listview,我想从web目录文件列表中显示listview。如何在android中访问web目录文件列表 例: 这是web目录 公共类MainActivity扩展了活动{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // JSONObject json =

我想从web目录文件列表中显示listview。如何在android中访问web目录文件列表

例:

这是web目录

公共类MainActivity扩展了活动{

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // JSONObject json = JSONfunctions
    // .getJSONfromURL("http://selangorbn.fm/song/");
    // Log.d("TAG", "json" + json);

}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    new Getparse().execute();
}

private void parse() throws IOException {

    String line = null, response;

    URL url = new URL("http://selangorbn.fm/song/");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    BufferedReader rd = new BufferedReader(new InputStreamReader(
            conn.getInputStream()));
    while (rd.readLine() != null) {
        line += rd.readLine();
    }

    System.out.println(line);

}

public class Getparse extends AsyncTask<Void, Void, integer> {
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
    }

    @Override
    protected integer doInBackground(Void... params) {
        // TODO Auto-generated method stub
        try {
            parse();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(integer result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
    }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//JSONObject json=JSONfunctions
//.getJSONfromURL(“http://selangorbn.fm/song/");
//Log.d(“标记”、“json”+json);
}
@凌驾
受保护的void onResume(){
//TODO自动生成的方法存根
super.onResume();
新建Getparse().execute();
}
私有void parse()引发IOException{
字符串行=null,响应;
URL=新URL(“http://selangorbn.fm/song/");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
BufferedReader rd=新的BufferedReader(新的InputStreamReader(
conn.getInputStream());
while(rd.readLine()!=null){
line+=rd.readLine();
}
系统输出打印项次(行);
}
公共类Getparse扩展了异步任务{
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
}
@凌驾
受保护的整数doInBackground(Void…params){
//TODO自动生成的方法存根
试一试{
parse();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(整数结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.activity\u主菜单);
返回true;
}
}
获取空值。

这对您不起作用,因为您试图在主应用程序线程上与Internet通信。这样做会使申请暂停,直到收到答复为止。因此Android有内部检查。您应该从您的代码中获取

您需要启动一个单独的服务器,并从那里与服务器进行对话。获取列表后,使用更新结果(您不能从网络线程中接触任何GUI元素)


只有当这是您可以从不合作的第三方服务器获得的全部信息时,解析HTML才是合理的。正如kumar所建议的,如果可以,请使用JSON或XML。

使用JSOUP,您可以列出远程目录中的所有文件。但我面临的一个问题是,如果该目录中有主页(Ex:index.html),那么它就不能读取该文件之外的内容。这是一个缺点。

您可以使用jsoup获取href标记,该标记链接到具有名称的文件夹

Document doc = Jsoup.connect(urltod).timeout(0).get();
                     doc.select("img").remove();
                     Elements links = doc.select("a");
                     List<String> listmainlinks = new ArrayList<>();
                     List<String> listnumberslinks = new ArrayList<>();
                     List<String> listweblinks = new ArrayList<>();
                    for (Element link : links) {
//                       String linkOuterH = link.outerHtml();  //allhreaf incl name
                        String linkInnerH = link.html(); // foldername
                         String linkHref = link.attr("href");  //folderlink
//                      System.out.println("linkHref "+linkInnerH );
                        if(linkInnerH.equals("") ||linkInnerH.equals(" ")||linkInnerH.equals(null) ){ }
                        else{ 
                            if(linkInnerH.contains("size=\"2\"")){
                                String[] afterfonttagarray =linkInnerH.split("\">");
                                String afterfonttag = afterfonttagarray[1];
                                String[] beforefonttagarray =afterfonttag.split("</font>");
                                String beforefonttag = beforefonttagarray[0];
                                listmainlinks.add(beforefonttag);
                                listweblinks.add("http://www.abc.com/audio/"+linkHref);

                        } 
                    }

                    System.out.println("listmainlinks "+ listmainlinks); "+listnumberslinks);
                    System.out.println("listweblinks "+listweblinks);
Document doc=Jsoup.connect(urltod).timeout(0.get();
文档选择(“img”).remove();
元素链接=文件选择(“a”);
List listmainlinks=new ArrayList();
List-listnumberslinks=new-ArrayList();
List listweblinks=new ArrayList();
用于(元素链接:链接){
//字符串linkOuterH=link.outerHtml();//allhreaf incl name
字符串linkInnerH=link.html();//foldername
字符串linkHref=link.attr(“href”);//folderlink
//System.out.println(“linkHref”+linkInnerH);
如果(linkInnerH.equals(“”| | linkInnerH.equals(“”| | linkInnerH.equals(null)){}
否则{
if(linkInnerH.contains(“大小=\“2\”)){
字符串[]afterfonttagarray=linkInnerH.split(“\”>”);
字符串afterfonttag=afterfonttagarray[1];
字符串[]beforefonttagarray=afterfonttag.split(“”);
字符串beforefonttag=beforefonttagarray[0];
添加(在FontTag之前);
listweblinks.add(“http://www.abc.com/audio/“+linkHref);
} 
}
System.out.println(“listmainlinks”+listmainlinks);“+listnumberslinks);
System.out.println(“listweblinks”+listweblinks);
这将为您提供文件夹名称以及与之相关联的链接,以便您以后使用 ArrayList>albumsList存储并迭代到列表或任何内容{
try {
                    org.jsoup.nodes.Document doc = Jsoup.connect("https://test.com/appdata/0131").get();
                    doc.select("img").remove();
                    Elements links = doc.select("a");
                    List<String> listmainlinks = new ArrayList<>();
                    List<String> listweblinks = new ArrayList<>();
                    for (org.jsoup.nodes.Element link : links) {
                        String linkInnerH = link.html();
                        String linkHref = link.attr("href");
                        System.out.println("linkHref: "+ linkHref);
                        System.out.println("linkInnerH: "+ linkInnerH);
                        if(linkInnerH.equals("") ||linkInnerH.equals(" ")||linkInnerH.equals(null) || linkHref.contains("?C=N;O=D")|| linkHref.contains("?C=M;O=A")||linkHref.contains("?C=S;O=A") ||linkHref.contains("?C=D;O=A")){ }
                       else if(linkHref.contains("/"))
                        {
                            if(!linkInnerH.contains("Parent Directory"))
                            listmainlinks.add(linkHref);
                        }

                        else{



                                listweblinks.add("https://test.com/appdata/0131" + linkHref);


                        }

                        }
                    System.out.println("listmainlinks "+ listmainlinks);
                    System.out.println("listweblinks "+listweblinks);
                   /* Elements img = doc.getElementsByTag("img");

                    int counter = 0;

                    for (org.jsoup.nodes.Element el : img) {
                        // If alt is empty or null, add one to counter
                        if(el.attr("alt") == null || el.attr("alt").equals("")) {
                            counter++;
                        }
                        System.out.println("image tag: " + el.attr("src") + " Alt: " + el.attr("alt"));
                    }
                    System.out.println("Number of unset alt: " + counter);*/

                } catch (IOException e) {
                    e.printStackTrace();
                }


https://test.com/appdata/
I/System.out: listmainlinks [0216/, 0128/, 0131/]
I/System.out: listweblinks []
https://test.com/appdata/0131/
I/System.out: listmainlinks []
I/System.out: listweblinks [https://test.com/appdata/0131/logo.png]
org.jsoup.nodes.Document doc=jsoup.connect(“https://test.com/appdata/0131).get(); 文档选择(“img”).remove(); 元素链接=文件选择(“a”); List listmainlinks=new ArrayList(); List listweblinks=new ArrayList(); for(org.jsoup.nodes.Element链接:links){ 字符串linkInnerH=link.html(); 字符串linkHref=link.attr(“href”); System.out.println(“linkHref:+linkHref”); System.out.println(“linkInnerH:+linkInnerH”); 如果(linkInnerH.equals(“”| | linkInnerH.equals(“”| | linkInnerH.equals(null)| | linkHref.contains(“?C=N;O=D”)| linkHref.contains(“?C=M;O=A”)| linkHref.contains(?C=S;O=A”){ else if(linkHref.contains(“/”) { 如果(!linkInnerH.contains(“父目录”)) listmainlinks.add(linkHref); } 否则{ listweblinks.add(“https://test.com/appdata/0131“+linkHref); } } System.out.println(“listmainlinks”+listmainlinks); System.out.println(“listweblinks”+listweblinks); /*元素img=do