935 Stimmen

Datei zu byte[] in Java

Wie konvertiere ich eine java.io.File zu einer byte[] ?

0 Stimmen

Eine Anwendung, die ich mir vorstellen kann, ist das Lesen von serialisierten Objekten aus einer Datei.

2 Stimmen

Eine andere Möglichkeit besteht darin, den Dateityp anhand der Kopfzeile zu ermitteln.

0 Stimmen

Try This byte[] bytes = null; BufferedInputStream fileInputStream = null; try{File file = new File(filePath); fileInputStream = new BufferedInputStream(new FileInputStream(file)); //fileInputStream = Thread. currentThread().getContextClassLoader().getResourceAsStream(this.filePath); bytes = new byte[(int) file.length()]; fileInputStream.read(bytes); } catch(FileNotFoundException ex){ throw ex; }

8voto

Cristian Tetic Punkte 165

Ich glaube, das ist der einfachste Weg:

org.apache.commons.io.FileUtils.readFileToByteArray(file);

9 Stimmen

Es gibt bereits eine Antwort mit diesem Vorschlag von Tom aus dem Jahr 2009

8voto

Tarun M Punkte 71

ReadFully Liest b.length Bytes aus dieser Datei in das Byte-Array, beginnend mit dem aktuellen Dateizeiger. Diese Methode liest wiederholt aus der Datei, bis die gewünschte Anzahl von Bytes gelesen wurde. Diese Methode blockiert, bis die angeforderte Anzahl von Bytes gelesen wurde, das Ende des Datenstroms erkannt wurde oder eine Ausnahme ausgelöst wurde.

RandomAccessFile f = new RandomAccessFile(fileName, "r");
byte[] b = new byte[(int)f.length()];
f.readFully(b);

6voto

Laurens Holst Punkte 18645

Wenn Sie Bytes in einen vorher zugewiesenen Byte-Puffer lesen wollen, kann diese Antwort helfen.

Ihre erste Vermutung wäre wahrscheinlich die Verwendung von InputStream read(byte[]) . Diese Methode hat jedoch einen Fehler, der ihre Verwendung unangemessen schwierig macht: Es gibt keine Garantie, dass das Array tatsächlich vollständig gefüllt wird, selbst wenn kein EOF auftritt.

Werfen Sie stattdessen einen Blick auf DataInputStream readFully(byte[]) . Dies ist ein Wrapper für Eingabeströme und hat das oben erwähnte Problem nicht. Außerdem gibt diese Methode einen Fehler aus, wenn ein EOF auftritt. Viel netter.

5voto

gomisha Punkte 2065

Der folgende Weg konvertiert nicht nur eine java.io.File in ein byte[], ich habe auch herausgefunden, dass es der schnellste Weg ist, eine Datei einzulesen, als ich viele verschiedene Methoden zum Lesen von Java-Dateien gegeneinander:

java.nio.file.Files.readAllBytes()

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

public class ReadFile_Files_ReadAllBytes {
  public static void main(String [] pArgs) throws IOException {
    String fileName = "c:\\temp\\sample-10KB.txt";
    File file = new File(fileName);

    byte [] fileBytes = Files.readAllBytes(file.toPath());
    char singleChar;
    for(byte b : fileBytes) {
      singleChar = (char) b;
      System.out.print(singleChar);
    }
  }
}

5voto

Usama Mehmood Punkte 75
//The file that you wanna convert into byte[]
File file=new File("/storage/0CE2-EA3D/DCIM/Camera/VID_20190822_205931.mp4"); 

FileInputStream fileInputStream=new FileInputStream(file);
byte[] data=new byte[(int) file.length()];
BufferedInputStream bufferedInputStream=new BufferedInputStream(fileInputStream);
bufferedInputStream.read(data,0,data.length);

//Now the bytes of the file are contain in the "byte[] data"

1 Stimmen

Dieser Code kann zwar eine Lösung für die Frage bieten, aber es ist besser, den Kontext zu erläutern, warum/wie er funktioniert. Dies kann zukünftigen Benutzern helfen, zu lernen und dieses Wissen auf ihren eigenen Code anzuwenden. Es ist auch wahrscheinlich, dass Sie positives Feedback von Nutzern in Form von Upvotes erhalten, wenn der Code erklärt wird.

0 Stimmen

Nun, das ist der wichtige Teil, den ich in zukünftigen Beiträgen im Auge behalten werde. Vielen Dank für Ihre nützlichen Einblicke.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X