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; }

21voto

Muhammad Sadiq Punkte 414

Der einfachste Weg, Bytes aus einer Datei zu lesen

import java.io.*;

class ReadBytesFromFile {
    public static void main(String args[]) throws Exception {
        // getBytes from anyWhere
        // I'm getting byte array from File
        File file = null;
        FileInputStream fileStream = new FileInputStream(file = new File("ByteArrayInputStreamClass.java"));

        // Instantiate array
        byte[] arr = new byte[(int) file.length()];

        // read All bytes of File stream
        fileStream.read(arr, 0, arr.length);

        for (int X : arr) {
            System.out.print((char) X);
        }
    }
}

1 Stimmen

Ich behaupte, dass es der "einfachste Weg" ist :)

0 Stimmen

Können Sie das hier erklären? Warum haben Sie einen Streit?

3 Stimmen

Nichts besonderes, aber du sagst einfachste und ich sehe mehr einfache Lösungen -> meiner Meinung nach ist es nicht die einfachste. Vielleicht war es das vor ein paar Jahren, aber die Welt ändert sich. Ich würde meine eigenen Lösungen nicht mit so einer Aussage kennzeichnen ;) Wenn du nur schreiben würdest "Meiner Meinung nach ist die einfachste " oder "die einfachste, die ich gefunden habe " Ich will dich nicht belästigen, dachte nur, es wäre nett, das zu kommunizieren.

16voto

Sachin Kumar Punkte 914

Dies ist eine der einfachsten Methoden

 String pathFile = "/path/to/file";
 byte[] bytes = Files.readAllBytes(Paths.get(pathFile ));

16voto

jontejj Punkte 2660

Guave hat Files.toByteArray() zu bieten. Es hat mehrere Vorteile:

  1. Sie deckt den Eckfall ab, dass Dateien eine Länge von 0 melden, aber dennoch Inhalt haben
  2. Es ist hochgradig optimiert, Sie erhalten eine OutOfMemoryException, wenn Sie versuchen, eine große Datei einzulesen, bevor Sie überhaupt versuchen, die Datei zu laden. (Durch geschickte Verwendung von file.length())
  3. Sie müssen das Rad nicht neu erfinden.

14voto

BlondCode Punkte 3721
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;

File file = getYourFile();
Path path = file.toPath();
byte[] data = Files.readAllBytes(path);

0 Stimmen

Welche JDK-Stufe ist das?

13voto

manmal Punkte 3721

Mit dem gleichen Ansatz wie die Community-Wiki-Antwort, aber sauberer und sofort kompilierbar (bevorzugter Ansatz, wenn Sie keine Apache-Commons-Bibliotheken importieren wollen, z. B. auf Android):

public static byte[] getFileBytes(File file) throws IOException {
    ByteArrayOutputStream ous = null;
    InputStream ios = null;
    try {
        byte[] buffer = new byte[4096];
        ous = new ByteArrayOutputStream();
        ios = new FileInputStream(file);
        int read = 0;
        while ((read = ios.read(buffer)) != -1)
            ous.write(buffer, 0, read);
    } finally {
        try {
            if (ous != null)
                ous.close();
        } catch (IOException e) {
            // swallow, since not that important
        }
        try {
            if (ios != null)
                ios.close();
        } catch (IOException e) {
            // swallow, since not that important
        }
    }
    return ous.toByteArray();
}

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