【问题标题】:Determining filetype of file in assets folder确定资产文件夹中文件的文件类型
【发布时间】:2011-03-01 21:50:09
【问题描述】:

问题:您如何以编程方式区分资产文件夹中的目录和常规文件?

使用 AssetManager 访问 assets 文件夹中的文件时,似乎无法确定文件实际上是文件还是目录。您从list 方法获取文件列表,然后使用open 方法打开文件。我想也许使用openFd 方法来获取资产文件描述符(然后请求普通文件描述符)会为我提供一些信息。但是请求目录的文件描述符会导致 IOException(这是有道理的,因为目录具有文件描述符意味着什么......?)。

目前,我依靠 IOException(由于试图打开 assets 文件夹中的目录)来确定文件是否实际上是目录。 (打开一个常规文件就可以了)。这似乎是个坏主意。还有其他区分文件和目录的建议吗?

【问题讨论】:

  • 您如何将文件排列到资产目录中?您不能将文件与文件夹分开而不是混合在一起吗?
  • 同意。您是放入assets/ 目录内容的人。因此,您无需猜测什么是目录,什么不是目录。
  • 无论您如何将文件放在assets/ 文件夹中,都存在此问题。 list 方法返回一个 String[] 数组,该数组包含位于请求的目录路径中的所有文件目录(例如,image.jpgmusic.mp3Tools)。如果你想在assets/ 中拥有任何类型的目录结构,你会遇到这个问题。
  • 更重要的是,您必须将事情分开。恕我直言,这是一个设计问题。是否有正当理由不能以这样的方式组织文件? assets/audio/*.mp3 assets/pics/*.png 现在我很好奇 :)

标签: android directory filesystems assets


【解决方案1】:

我同意您帖子中的 cmets。但要回答您的问题,请创建一个指向资产目录的 File 对象 File root = new File("path/to/directory");

然后你可以像这样提取它的所有子文件和目录 File[] files = root.listFiles();

获得列表后,您可以使用 File.isDirectory() 确定什么是什么。

至于确定文件类型,就是用String.subString() 来抓取最后一个句号之后的字符。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2018-01-29
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 2023-03-11
    • 2012-05-13
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多