2015-01-12 54 views
8

Stworzyłem podstawową aplikację do nagrywania dźwięku za pomocą interfejsu Media Recorder API. Próbuję utworzyć folder na karcie SD i zapisać nagrane pliki w tym folderze. Otrzymuję to ostrzeżenie z następującym kodem.OSTRZEŻENIE: Plik.mkdir() jest ignorowany

File.mkdir() jest ignorowany

// Assign random number to avoid audio file from overwriting 
    Long tsLong = System.currentTimeMillis()/1000; 

    // Specify a Location for the recorded file to be stored in the SD card 
    mFileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "/AudioRecordTest/"; 
    File path = new File(mFileName); 
    if(!path.exists()) { 
     path.mkdir(); 
    } 
    mFileName += "/AudioRecordTest_" + tsLong.toString() + ".mp3"; 

Jak rozwiązać ten komunikat ostrzegawczy. Jeśli istnieje jakikolwiek inny błąd, możesz go zmodyfikować.

+0

spróbować bez ostatniego '/': '/ AudioRecordTest' zamiast'/AudioRecordTest/' – Matteo

+0

Czy masz pewność, że dodasz uprawnienie' WRITE_EXTERNAL_STORAGE' do pliku 'AndroidManifest.xml'? – Willis

+0

@Willis To nie jest pozwolenie, dodałem je na początku. –

Odpowiedz

9

Popraw mnie jeśli się mylę, ale spodziewam się, że (kompilacja) komunikat ostrzegawczy naprawdę mówi to:

Wynik File.mkdir() jest ignorowany

... czy coś takiego. Mówi ci, że ignorujesz wynik połączenia mkdir(), który mówi ci, czy katalog został utworzony.

Jednym ze sposobów uniknięcia ostrzeżenia jest przetestowanie wyniku i podjęcie odpowiednich działań. Innym byłoby po prostu przypisanie wyniku do zmiennej tymczasowej, zignorowanie go i (potencjalnie) awarię później, ponieważ katalog nie został utworzony, kiedy powinien być.

(Guess, które rozwiązanie jest lepsze ...)


Zapraszam do modyfikacji kodu, jeśli istnieje jakikolwiek inny błąd.

Od czasu, gdy użytkownik poprosił ... jest BAD STYLE, aby używać węgierskiej notacji dla nazw zmiennych Java. Java jest językiem mocno napisanym, gdzie wszystkie zmienne mają wyraźne zadeklarowane typy. Nie powinieneś potrzebować mentalnej kuli jakiejś konwencji o upiornym identyfikatorze, aby powiedzieć ci, jaki typ zmiennej ma być.

10

jako @Stephen C sugeruje, i przetwarzane w tych sposobów

1)

boolean isDirectoryCreated= path.mkdir();

ignorować 'isDirectoryCreated'

2) (zalecane)

boolean isDirectoryCreated=path.exists(); 
if (!isDirectoryCreated) { 
    isDirectoryCreated= path.mkdir(); 
} 
if(isDirectoryCreated) { 
    // do something 
} 

3)

if (!path.exists()) { 
    if(path.mkdir()){ 
    // do something 
    } 
} 
0

Jeśli chcesz zignorować to ostrzeżenie, dodać to na metodzie: @SuppressWarnings ("ALL")

+0

Upewnij się, że wyostrzasz swoje szkatułki przed rozpoczęciem lekcji żonglerki :-) –

+0

Ostrzeżenia nie są rozwiązywane z pominięciem ich. – grant