java.io.IOException behoben: Kein Speicherplatz mehr auf Gerät in Java
Heute werden wir die Ursache des Fehlers java.io.IOException: No space left on device
beim Programmieren in Java herausfinden. Außerdem lernen wir die möglichen Lösungen kennen, um diesen Fehler zu beheben.
Ursachen und mögliche Lösungen für den Fehler java.io.IOException: No space left on device
Lassen Sie uns ein Szenario haben, um den Fehler zu verstehen und seinen Grund zu finden. Angenommen, wir haben ein Programm, das viele Daten in eine Datei schreibt, aber nach einiger Zeit sehen wir einen Fehler mit der Meldung Kein Platz mehr auf dem Gerät
.
Dies bedeutet, dass wir auf unserem Gerät nicht genügend Speicherplatz haben, um alle erforderlichen Daten in eine Datei zu schreiben, die auf dieser bestimmten Festplatte gespeichert ist. Normalerweise passiert dies beim Arbeiten mit großen Instanzen mit einer hohen Anzahl von Seiten, die erstellt werden.
Wie kann dieser Fehler behoben werden? Einige der Lösungen sind unten aufgeführt:
Lösung 1
Java 7 Java New Input/Output (NIO) bietet die Klasse FileStore
, mit der wir sicherstellen können, dass wir genügend Platz zum Schreiben haben. Im Folgenden finden Sie einen Beispielcode, der die Verwendung demonstriert.
// write the path where you want to write
Path path = Paths.get("/yourPath/fileName");
FileSystem fileSystem = FileSystems.getDefault();
Iterable<FileStore> iterable = fileSystem.getFileStores();
// iterate over the instances of FileStore
Iterator<FileStore> iterator = iterable.iterator();
while (iterator.hasNext()) {
FileStore fileStore = iterator.next();
// you may be able to use or getUnallocatedSpace()
// instead of getUsableSpace() method
long sizeAvail = fileStore.getUsableSpace();
// your given Path belongs to this specific FileStore
if (Files.getFileStore(path).equals(fileStore) {
if (sizeAvail > theSizeOfBytesYouWantToWrite) {
// do your stuff
} // end if
}//end if
} // end while
Sie können wahrscheinlich immer noch mit einer IOException
konfrontiert werden, weil nichts atomar ist. Andere Prozesse verwenden und speichern möglicherweise Daten auf derselben Festplatte.
Es ist also wichtig, dies im Hinterkopf zu behalten und die Ausnahme der Situation entsprechend zu behandeln.
Lösung 2
Der try-catch
-Block kann auch den Zweck erfüllen, wenn wir damit umgehen wollen, dass das Schreiben aufhört, wenn kein Platz mehr vorhanden ist.
Denken Sie daran, dass es nicht praktikabel ist, diesen Fehler von vornherein zu vermeiden. Wir können zuerst die Verfügbarkeit des benötigten Speicherplatzes prüfen, wenn wir bereits wissen, wie viel Speicherplatz wir benötigen.
Auch hier kann es vorkommen, dass dieser Fehler immer noch auftritt, wenn eine andere Anwendung auf dieselbe Festplatte schreibt. Diese Art der Fehlerbehandlung hängt also davon ab, welche Situation diesen Fehler verursacht. Die meisten Anwendungen gehen auf irgendeine Weise damit um, wenn sie auf diesen Fehler stoßen.
Verwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse