首页 文章

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

提问于
浏览
0

我想单击活动中的按钮并打开一个单独的活动,该活动显示我想要访问的文件夹的arraylist . 因此,进入下一个活动的代码很简单(以意图开始新活动) . 但是,我想在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);

1 回答

  • 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方法结束 .

相关问题