2015-01-12 21 views
8

Ich habe eine grundlegende Audio Recording App mit Media Recorder APIs erstellt. Ich versuche, einen Ordner auf der SD-Karte zu erstellen und meine aufgezeichneten Dateien in diesem Ordner zu speichern. Ich bekomme diese Warnung mit folgendem Code.WARNUNG: File.mkdir() wird ignoriert

File.mkdir() wird ignoriert

// 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"; 

Wie diese Warnmeldung zu lösen. Fühlen Sie sich frei, den Code zu ändern, wenn es einen anderen Fehler gibt.

+0

Versuch ohne die letzte '/': '/ AudioRecordTest' statt'/AudioRecordTest/' – Matteo

+0

Haben Sie die' WRITE_EXTERNAL_STORAGE' Berechtigung zu Ihrer 'AndroidManifest.xml' Datei hinzugefügt? – Willis

+0

@Willis Es ist nicht die Erlaubnis, ich habe es am Anfang hinzugefügt. –

Antwort

9

mich korrigieren, wenn ich falsch, aber ich erwarte, dass die (Kompilierung) Warnmeldung diese wirklich sagt:

Ergebnis File.mkdir()

ignoriert ... oder etwas ähnliches. Es teilt Ihnen mit, dass Sie das Ergebnis des Aufrufs mkdir() ignorieren, der Ihnen mitteilt, ob ein Verzeichnis erstellt wurde oder nicht.

Eine Möglichkeit zur Vermeidung der Warnung wäre, das Ergebnis zu testen und entsprechend zu handeln. Eine andere wäre, das Ergebnis einfach einer temporären Variablen zuzuweisen, sie zu ignorieren und (möglicherweise) später abzustürzen, weil das Verzeichnis nicht erstellt wurde, als es hätte sein sollen.

(Raten Sie, welche Lösung ist besser ...)


Fühlen Sie sich frei, den Code zu ändern, wenn es einen anderen Fehler.

Da Sie gefragt ... es ist BAD STYLE, ungarische Notation für Java-Variablennamen zu verwenden. Java ist eine stark typisierte Sprache, in der alle Variablen eindeutig deklarierte Typen haben. Sie sollten nicht die mentalen Krücken einer grässlichen Bezeichnerkonvention brauchen, um Ihnen zu sagen, was der Typ einer Variablen sein soll.

10

Als @Stephen C vermuten lässt, behandelt i auf diese Weise

1)

boolean isDirectoryCreated= path.mkdir();

und ignorieren 'isDirectoryCreated'

2) (empfohlen)

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

3)

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

Wenn Sie diese Warnung ignorieren möchten, fügen Sie diese über die Methode: @SuppressWarnings ("all")

+0

Und stellen Sie sicher, dass Sie Ihre Entermesser schärfen, bevor Sie mit Ihrer Jonglierstunde beginnen :-) –

+0

Warnungen werden nicht dadurch gelöst, dass sie unterdrückt werden. – grant