文件夹中的文件的ArrayList Android内部存储/存储/模拟/ 0 /

时间:2017-02-22 01:30:50

标签: java android xml android-layout android-studio

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

此内容的路径位于我的设备的内部存储空间(不是外部/ SD卡存储空间)。

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

/存储/模拟/ 0 / Android设备/数据/ COM ... /文件/

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);

1 个答案:

答案 0 :(得分:0)

我的解决方案如下。我也无法使用我从下面的代码中看到的文件来实现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方法结束。