Determinando o FileType of File in Ativo Pasta
-
26-09-2019 - |
Pergunta
Pergunta: Como você distingue programaticamente entre diretórios e arquivos regulares na pasta Ativos?
Ao usar o AssetManager para acessar arquivos na pasta Ativos, parece impossível determinar se um arquivo é de fato um arquivo ou um diretório. Você obtém a lista de arquivos do list
método e depois abra o arquivo usando o open
método. Eu pensei talvez usar o openFd
Método para obter o descritor de arquivo de ativos (e depois solicitar posteriormente o descritor de arquivo normal) me forneceria algumas informações. Mas solicitar ao descritor de arquivo um diretório resulta em uma ioexception (o que faz sentido, pois o que significaria para um diretório ter um descritor de arquivo ...?).
Atualmente, estou confiando nessa ioexception (resultante da tentativa de abrir um diretório na pasta Ativos) para determinar se um arquivo é de fato um diretório. (Abrir um arquivo regular funciona muito bem). Parece uma má ideia. Alguma outra sugestão para distinguir entre um arquivo e um diretório?
Solução
Eu concordo com os comentários em sua postagem. Mas para responder à sua pergunta, faça um objeto de arquivo apontado para o diretório de ativosFile root = new File("path/to/directory");
Então você pode extrair todos os seus sub -arquivos e diretórios como esteFile[] files = root.listFiles();
Depois de ter a lista, você pode determinar o que é o que usa o arquivo.isdirectory ().
Quanto à determinação dos tipos de arquivos, isso é tão simples quanto usar string.substring () para agarrar o personagem após o último período.
espero que isto ajude