2013-07-18 4 views
0

Я пытаюсь создать файл на внутренней памяти. Если файл существует, я просто добавлю его, иначе я его создам и поставлю в него заголовок.Это правильный способ проверки наличия файла

Я сделал это, вызвав openFileInput, и если выбрано исключение, файл не существует, и я его настроил. Если никакого исключения, я открою файл для добавления к нему

Вот код, хорошо ли? Я чувствую, что есть так много redundnacy

try{ 
    openFileInput(filename); 
    FileoutputStream fos = OpenFileOutput(filename,Context.MODE_PRIVATE); 
}catch(FileNotFoundException e){ 
    setupFile(filename); 
} 
+1

NO. Обработка исключений используется, когда есть исключение, что ВЫ разработчик не уверен, что произойдет то, что вы не можете предсказать. – wtsang02

ответ

1

Вы можете попробовать следующее:

public Boolean fileExists() { 
    File myFile = new File(PATH); 
    return myFile.exists(); 
} 

В файле конструктору идет полный путь к файлу плюс имя файла, который вы проверяете для.

Это будет возвращать логическое значение, которое вы затем можете использовать для определения того, что делать в случае true/false.

+1

Не используйте конкатенацию для создания путей к файлам. Используйте конструктор 'File'. – CommonsWare

+0

Проблема в том, что это внутреннее хранилище, поэтому я не использую путь. Вот почему я придерживаюсь контекста .... методы – Snake

+0

@CommonsWare не могли бы вы объяснить, почему вы не должны использовать конкатенацию? Я использую это для проверки базы данных и не сталкивался с проблемами ...? – TronicZomB

2

Вы могли бы попробовать что-то вроде:

File file = new File(path); 
if(file.exists()){ 
    //do stuff 
} 
+0

Проблема в том, что это внутреннее хранилище, поэтому я не использую путь. Вот почему я придерживаюсь контекста .... методы – Snake

+0

context.getFilesDir() + "/" + "GPSLog.txt"; Используйте это, чтобы проверить наличие файла для его создания, а затем добавить. –

+0

У кого-то был ответ раньше. Поэтому я принял их. Однако, спасибо. Я не использовал concatination, я использовал новый File (getFilesDir, имя файла). Это безопаснее (я надеюсь) – Snake

0

Это то, что я использую:

try {  
     file = openFileInput(filename); 
    } catch (FileNotFoundException e) { 
     // file does not exist 
     return false; 
    } 
+1

При попытке открыть файл есть ожидаемая точка сбоя, поэтому перед попыткой ее открыть вы должны проверить наличие файла. См. Мой ответ. –

+0

Итак, да, я думаю, что он прост и достаточно эффективен. – ruffner

+0

Мой метод меньше кода и лучшей практики, таким образом, проще и эффективнее. То есть, другими словами, нет. –

Смежные вопросы