Android; Verifique se o arquivo existe sem criar um novo

227

Quero verificar se o arquivo existe na minha pasta do pacote, mas não quero criar um novo.

File file = new File(filePath);
if(file.exists()) 
     return true;

Esse código verifica sem criar um novo arquivo?

MBH
fonte
possível duplicata de Teste se o arquivo existe
piokuc
1
@Kunok estou verificando seus Editar comentário: removido palavras tais como tanques como eles são ... : P
Kevin Guan
1
@KevinGuan Oh yeah meu mau, casa ficou de novo partido véspera então eu não era capaz de escrever corretamente :)
Kunok

Respostas:

440

Seu pedaço de código não cria um novo, apenas verifica se já existe e nada mais.

File file = new File(filePath);
if(file.exists())      
//Do something
else
// Do something else.
Maikel Bollemeijer
fonte
5
Não sei por que, no meu caso, esse código está criando um novo arquivo.
ofnowhere
Como fazer check-in na subpasta também?
Pratik Butani
4
É assim porque não há método estático: File.exists (String file), então você precisa instanciar um novo objeto File para acessar o método 'Exists'.
Giova
3
Eu acho que o OP não deseja criar um novo objeto de arquivo.
AndroDev 25/07/16
1
@AndroDev não - ele não deseja criar um novo ARQUIVO, a resposta cria uma nova REFERÊNCIA ao arquivo.
Marian Paździoch 11/04
31

Quando você usa esse código, não está criando um novo arquivo, apenas criando uma referência de objeto para esse arquivo e testando se ele existe ou não.

File file = new File(filePath);
if(file.exists()) 
    //do something
Victor Laerte
fonte
21

Funcionou para mim:

File file = new File(getApplicationContext().getFilesDir(),"whatever.txt");
    if(file.exists()){
       //Do something
    }
    else{
       //Nothing
     }
Jordi Vicens
fonte
2
Esta é a solução se você tiver apenas o nome do arquivo e não o seu caminho
Zach
1
@Zach Não realmente, é caminho seria o primeiro parâmetro Enviei (getApplicationContext () getFilesDir ().)
Jordi Vicens
8

Quando você diz "na sua pasta de pacotes", você se refere aos arquivos de aplicativos locais? Nesse caso, você pode obter uma lista deles usando o método Context.fileList () . Basta percorrer e procurar seu arquivo. Supondo que você salvou o arquivo original com Context.openFileOutput () .

Código de exemplo (em uma atividade):

public void onCreate(...) {
    super.onCreate(...);
    String[] files = fileList();
    for (String file : files) {
        if (file.equals(myFileName)) {
            //file exits
        }
    }
}
thomas88wp
fonte
5

A methodsclasse Path é sintática, o que significa que eles operam na instância Path. Mas, eventualmente, você deve acessar o filesistema para verificar se existe um determinado caminho

 File file = new File("FileName");
 if(file.exists()){
 System.out.println("file is already there");
 }else{
 System.out.println("Not find file ");
 }
Anand Dwivedi
fonte
1
public boolean FileExists(String fname) {
        File file = getBaseContext().getFileStreamPath(fname);
        return file.exists();
}
HomieZ2
fonte
0

Propriedades de extensão Kotlin

Nenhum arquivo será criado quando você criar um objeto File, é apenas uma interface.

Para facilitar o trabalho com arquivos, existe uma .toFilefunção existente no Uri

Você também pode adicionar uma propriedade de extensão em Arquivo e / ou Uri, para simplificar ainda mais o uso.

val File?.exists get() = this?.exists() ?: false
val Uri?.exists get() = File(this.toString).exists()

Em seguida, basta usar uri.existsou file.existspara verificar.

Gibolt
fonte