2010-06-09 69 views
2

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

当使用AssetManager访问资产文件夹中的文件时,似乎无法确定文件实际上是文件还是目录。您从list方法获得文件列表,然后使用open方法打开文件。我想可能使用openFd方法获取资产文件描述符(然后请求正常的文件描述符)会提供一些信息。但是请求一个目录的文件描述符会导致一个IOException(这很有意义,因为这对于一个目录有一个文件描述符意味着什么?)。

目前我依靠IOException(由于尝试在资产文件夹中打开一个目录而产生)以确定文件是否实际上是一个目录。 (打开一个普通的文件工作得很好)。这似乎是一个坏主意。任何其他建议来区分文件和目录?

+2

你如何安排你的文件到资产目录?你不能保持档案 与文件夹分开,而不是混合所有的东西吗? – 2010-06-09 22:01:39

+1

同意。你是放置在“assets /'目录中的人。因此,你不应该猜测什么是和不是一个目录。 – CommonsWare 2010-06-09 22:51:52

+0

无论您如何将文件放在'assets /'文件夹中,这个问题都存在。 list方法返回位于请求的目录路径(例如'image.jpg','music.mp3','Tools')中的所有文件的String []阵列。如果你想在'assets /'里面有任何的目录结构,你会遇到这个问题。 – ChaimKut 2010-06-10 12:58:29

回答

1

我同意你的帖子上的评论。但是,为了回答你的问题,使文件对象指向了资产目录 File root = new File("path/to/directory");

然后一旦你的列表,你可以决定什么是什么,你可以提取它的所有子文件和目录这样 File[] files = root.listFiles();

使用File.isDirectory()。

至于确定文件类型,就像使用String.subString()来抓取最后一段时间后的字符一样简单。

希望这有助于

相关问题