繁体   English   中英

文件夹Android内部存储中的文件的ArrayList / storage / emulated / 0 /

[英]ArrayList for Files in Folder Android Internal Storage /storage/emulated/0/

我想在活动中单击一个按钮,然后打开一个单独的活动,该活动显示要访问的文件夹的数组列表。 因此,进入下一个活动的代码很简单(以意图开始新的活动)。 但是,我想在arraylist的此新活动中显示文件夹的内容。

该内容的路径在设备的内部存储中(而不是外部/ SD卡存储中)。

我想显示以下目录中的文件

/storage/emulated/0/Android/data/com.../files/

com ...是伪造的路径名,它只是为了说明其中有一个程序包名称。

因此,最重要的是我想在新活动中显示arraylist中文件(文本文件或图片等)中的内容。 每当我尝试使用“文件”指向该路径时,它不会显示arraylist,而是显示一个空白屏幕。

因此,例如:

String path = "/storage/emulated/0/Android/data/com.../files/";
File dir = new File(path);

List values = new ArrayList();

String[] list = dir.list();
if (list != null) {
    for (String file : list) {
        if (!file.startsWith(".")) {
            values.add(file);
        }
    }
}

Collections.sort(values);

ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_2, android.R.id.text1, values);
setListAdapter(adapter);

我的解决方案如下。 我还无法使用下面的代码看到的文件来实现FileInputStream。 通过使用子字符串,我可以获取文件名,但是当我使用FileInputStream时,很难读取它。 我的异常抛出在这一行代码上。

FileInputStream in = openFileInput(“ test.txt”);

我对实际问题的解决方案。

内部oncreate

lvFiles = (ListView)findViewById(R.id.listViewFiles);

        String path = "/storage/emulated/0/Android/data/com.../files/";

        try {

            List<File> files = getListFiles(new File(path));


            String[] namesOfFiles = new String[files.size()];
            for (int i = 0; i < files.size(); i++) {
                namesOfFiles[i] = files.get(i).toString();
            }

            ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.filetextview, namesOfFiles);

            lvFiles.setAdapter(arrayAdapter);
            //lvFiles.setAdapter(new CustomAdapterArrayAdapter(FilesList.this, files));

        }

        catch (Exception e)
        {

        }

onCreate内部的结尾。 将其放在onCreate中,以便在打开页面后立即填充列表视图。

getListFiles方法开始

private List<File> getListFiles(File parentDir)
    {
        ArrayList<File> inFiles = new ArrayList<File>();
        File[] files = parentDir.listFiles();
        for (File file : files) {

            //if (file.getName().endsWith(".txt"))

            if (file.isDirectory()) {
                inFiles.addAll(getListFiles(file));
            } else {
                if(file.getName().endsWith(".txt")){
                    inFiles.add(file);
                }
            }
        }
        return inFiles;
    }

getListFiles方法结束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM