【问题标题】:File creation assets android文件创建资产android
【发布时间】:2012-02-01 04:14:09
【问题描述】:

我正在构建一个应用程序,它的作用是扫描root 文件夹

然后它会搜索里面是否有任何文件夹...这样做的目的是保存所有 数据库中的文本文件路由。数据库将包含文本文件名和路由。

这是代码的一部分:

private void seedData(int indent, File file) throws IOException {
        if (file.isDirectory()) {
          File[] files = file.listFiles();
          for (int i = 0; i < files.length; i++)
            {
              seedData(indent + 4, files[i]);
              path+=files[i].getPath();
            }

        }
        else{
            db.execSQL("insert into "+TABLE+" (title, url) values ('"+
                    file.getName().substring(0, file.getName().length()-4)+"', '"+file.getPath()+"');");
        }

      }

但在普通 Java 中,我只是创建一个带有路由的文件,然后将其发送到类似的方法 这个:seedData(1, new File("/root"));。所以我的问题是,我如何在 Android 中做到这一点?或者更准确地说,我如何创建一个指向位于assets 中的root 文件夹的文件,以便它被我的代码“扫描”。我已经尝试过seedData(1, new File("/assets/root"));,但它没有用。 任何帮助将不胜感激。

注意:不,我无法手动保存路径,因为所有这些子文件夹中有超过 3k 个文本文件。

【问题讨论】:

    标签: android database android-file android-assets


    【解决方案1】:

    这里的问题是资产不是文件。您的上述方法的 Android 等效项是这样的:

    private void seedData(int indent, String path, AssetManager mgr)
        throws IOException
    {
        String[] list = mgr.list(path);
        if (list.length > 0) {
            // path is a directory with something in it
            for (String item : list) {
                seedData(indent + 4, path + "/" + item, mgr);
            }
        } else {
            // path is either an empty directory or a file
            // unfortunately, Android makes it hard to distinguish
            String name = path.substring(path.lastIndexOf('/') + 1);
            db.execSQL("insert into "+TABLE+" (title, url) values ('"
                    +name.substring(0, name.length()-4)+"', '"
                    +path+"');");
        }
    }
    

    你可以从你的活动中调用它

    seedData(0, "root", getAssets());
    

    作为参考,“根”文件夹中资产的 URI 格式为file:///android_asset/root/...

    【讨论】:

    • 唯一似乎是,如果有一个空目录,它将被“推送”到数据库中,对吗? ://
    • @Raykud - 也许您可以通过检查名称本身来避免注册空目录;如果它没有扩展名,则它是一个空目录而不是文件。否则,我不知道有什么办法可以避免这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多