Konvertieren von Inputstream in Byte-Array in Java

Mohammad Irfan 12 Oktober 2023
  1. Konvertieren von InputStream in Byte-Array mit der Methode readAllBytes() in Java
  2. InputStream in Byte-Array umwandeln mit der Methode toByteArray() in Java
  3. InputStream in Byte-Array umwandeln mit der Methode write() in Java
  4. InputStream in Byte-Array umwandeln mit der Methode readAllBytes() in Java
  5. InputStream in ein Byte-Array umwandeln mit der Methode readFully() in Java
  6. InputStream in Byte-Array umwandeln mit der Methode getBytes() in Java
  7. InputStream in Byte-Array konvertieren mit dem angepassten Code in Java
  8. InputStream in ein Byte-Array konvertieren mit der Methode toByteArray() in Java
Konvertieren von Inputstream in Byte-Array in Java

Dieses Tutorial stellt vor, wie man in Java einen Inputstream in ein Byte-Array konvertiert und zeigt einige Beispielcodes zum Verständnis des Themas.

InputStream ist eine abstrakte Klasse und Oberklasse aller Klassen, die einen Eingabestrom von Bytes darstellen. Java verwendet einen Eingabestrom, um Daten aus einer beliebigen Quelle wie Datei, Array usw. zu lesen. Wir werden dann sehen, wie man diesen Stream in ein Byte-Array umwandelt, indem wir einige eingebaute Methoden und eigenen Code in Java verwenden.

In diesem Artikel werden wir mehrere eingebaute Methoden wie toByteArray(), readAllBytes(), readFully(), getBytes(), write(), usw. verwenden und eine Textdatei abc.txt wird zum Lesen von Daten verwendet. Diese Textdatei enthält einen einzelnen Satz, Welcome to Delfstack, den wir einlesen und in ein Byte-Array umwandeln werden, das wiederum in einen String umgewandelt werden kann, um das gewünschte Ergebnis zu überprüfen.

Konvertieren von InputStream in Byte-Array mit der Methode readAllBytes() in Java

Wir können die Methode readAllBytes() verwenden, um alle Daten in ein Byte-Array zu bekommen. Diese Methode gibt ein Byte-Array zurück, das an den Konstruktor String weitergegeben werden kann, um Textdaten auszugeben.

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      InputStream ins = new FileInputStream("abc.txt");
      byte[] byteArray = ins.readAllBytes();
      System.out.println(new String(byteArray));
      ins.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Ausgabe:

Welcome to Delfstack

InputStream in Byte-Array umwandeln mit der Methode toByteArray() in Java

Wenn Sie mit der Apache-Bibliothek arbeiten, können Sie die Methode toByteArray() der Klasse IOUtils verwenden, um alle Daten in ein Byte-Array zu übertragen. Diese Methode gibt ein Byte-Array zurück, das weiter an den String-Konstruktor übergeben werden kann, um die textuellen Daten auszugeben.

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      InputStream ins = new FileInputStream("abc.txt");
      byte[] bytes = IOUtils.toByteArray(ins);
      System.out.println(new String(bytes));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Ausgabe:

Welcome to Delftstack

InputStream in Byte-Array umwandeln mit der Methode write() in Java

Wir können die Methode write() der Klasse ByteArrayOutputStream verwenden, um alle Daten in ein Byte-Array zu bekommen. Diese Methode gibt ein Byte-Array zurück, das an den Konstruktor String übergeben werden kann, um textuelle Daten zu drucken.

package myjavaproject;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      InputStream ins = new FileInputStream("abc.txt");
      ByteArrayOutputStream buffer = new ByteArrayOutputStream();
      int read;
      byte[] data = new byte[16384];
      while ((read = ins.read(data, 0, data.length)) != -1) {
        buffer.write(data, 0, read);
      }
      System.out.println(new String(data));
      ins.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Ausgabe:

Welcome to Delfstack

InputStream in Byte-Array umwandeln mit der Methode readAllBytes() in Java

Wir können die Methode readAllBytes() der Klasse DataInputStream verwenden, um alle Daten in ein Byte-Array zu konvertieren. Diese Methode gibt ein Byte-Array zurück, das an den Konstruktor String weitergereicht werden kann, um textuelle Daten auszugeben.

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      DataInputStream dis = new DataInputStream(new FileInputStream(file));
      byte[] bytes = dis.readAllBytes();
      System.out.println(new String(bytes));
      dis.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Ausgabe:

Welcome to Delftstack

InputStream in ein Byte-Array umwandeln mit der Methode readFully() in Java

Wir können die Methode readFully() der Klasse RandomAccessFile verwenden, um alle Daten in ein Byte-Array zu konvertieren. Diese Methode gibt ein Byte-Array zurück, das an den Konstruktor String übergeben werden kann, um Textdaten auszugeben.

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      InputStream is = new FileInputStream(file);
      RandomAccessFile raf = new RandomAccessFile(file, "r");
      byte[] bytesData = new byte[(int) raf.length()];
      raf.readFully(bytesData);
      System.out.println(new String(bytesData));
      is.close();
      raf.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Ausgabe:

Welcome to Delfstack

InputStream in Byte-Array umwandeln mit der Methode getBytes() in Java

Wir können die Methode getBytes() der Klasse String verwenden, um alle Daten in ein Byte-Array zu konvertieren. Diese Methode gibt ein Byte-Array zurück, das an den Konstruktor String weitergegeben werden kann, um Textdaten auszugeben.

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.stream.Collectors;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      byte[] bytesData = {};
      InputStream is = new FileInputStream(file);
      try (BufferedReader buffer = new BufferedReader(new InputStreamReader(is))) {
        bytesData = buffer.lines().collect(Collectors.joining("\n")).getBytes();
      }
      System.out.println(new String(bytesData));
      is.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Ausgabe:

Welcome to Delftstack

InputStream in Byte-Array konvertieren mit dem angepassten Code in Java

Wenn Sie keine der eingebauten Methoden verwenden möchten, können Sie diesen angepassten Code verwenden, um InputStream in ein Byte-Array zu konvertieren. Dieser Code gibt ein Byte-Array zurück, das an den Konstruktor String weitergegeben werden kann, um Textdaten zu drucken.

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      byte[] bytesData = {};
      bytesData = getBytesFromFile(new File(file));
      System.out.println(new String(bytesData));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public static byte[] getBytesFromFile(File file) throws IOException {
    InputStream is = new FileInputStream(file);
    long length = file.length();
    byte[] bytes = new byte[(int) length];
    int offset = 0;
    int numRead = 0;
    while (
        offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
      offset += numRead;
    }
    if (offset < bytes.length) {
      throw new IOException("Could not read file " + file.getName());
    }
    return bytes;
  }
}

Ausgabe:

Welcome to Delfstack

InputStream in ein Byte-Array konvertieren mit der Methode toByteArray() in Java

Wir können die Methode toByteArray() der Klasse ByteArrayOutputStream verwenden, um alle Daten in ein Byte-Array zu konvertieren. Diese Methode gibt ein Byte-Array zurück, das an den Konstruktor String weitergegeben werden kann, um Textdaten zu drucken.

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      InputStream is = new FileInputStream(file);
      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
      is.transferTo(byteArrayOutputStream);
      byte[] bytesData = byteArrayOutputStream.toByteArray();
      System.out.println(new String(bytesData));
      is.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Ausgabe:

Welcome to Delfstack

Verwandter Artikel - Java IO