Ich möchte FileOutputStream in Byte-Array für die Übergabe von Binärdaten zwischen zwei Anwendungen konvertieren. bitte kann jemand helfen?ist es möglich, FileOutputStream in Byte-Array zu konvertieren?
Antwort
Um eine Datei in ein Byte-Array zu konvertieren, wird die ByteArrayOutputStream-Klasse verwendet. Diese Klasse implementiert einen Ausgabestream, in dem die Daten in ein Byte-Array geschrieben werden. Der Puffer wächst automatisch, wenn Daten in ihn geschrieben werden. Die Daten können mit toByteArray() und toString() abgerufen werden.
Um das Byte-Array zurück in die ursprüngliche Datei zu konvertieren, wird die FileOutputStream-Klasse verwendet. Ein Dateiausgabestream ist ein Ausgabestream zum Schreiben von Daten in eine Datei oder in einen FileDescriptor.
Der folgende Code wurde vollständig getestet.
public static void main(String[] args) throws FileNotFoundException, IOException {
File file = new File("java.pdf");
FileInputStream fis = new FileInputStream(file);
//System.out.println(file.exists() + "!!");
//InputStream in = resource.openStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
try {
for (int readNum; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum); //no doubt here is 0
//Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
System.out.println("read " + readNum + " bytes,");
}
} catch (IOException ex) {
Logger.getLogger(genJpeg.class.getName()).log(Level.SEVERE, null, ex);
}
byte[] bytes = bos.toByteArray();
//below is the different part
File someFile = new File("java2.pdf");
FileOutputStream fos = new FileOutputStream(someFile);
fos.write(bytes);
fos.flush();
fos.close();
}
So schreiben Sie ein Byte-Array in eine Datei mit einem FileOutputStream. Der FileOutputStream ist ein Ausgabestream zum Schreiben von Daten in eine Datei oder einen FileDescriptor.
public static void main(String[] args) {
String s = "input text to be written in output stream";
File file = new File("outputfile.txt");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
// Writes bytes from the specified byte array to this file output stream
fos.write(s.getBytes());
}
catch (FileNotFoundException e) {
System.out.println("File not found" + e);
}
catch (IOException ioe) {
System.out.println("Exception while writing file " + ioe);
}
finally {
// close the streams using close method
try {
if (fos != null) {
fos.close();
}
}
catch (IOException ioe) {
System.out.println("Error while closing stream: " + ioe);
}
}
}
können Sie ByteArrayOutputStream
verwenden wie die
private byte[] filetoByteArray(String path) {
byte[] data;
try {
InputStream input = new FileInputStream(path);
int byteReads;
ByteArrayOutputStream output = new ByteArrayOutputStream(1024);
while ((byteReads = inputStream.read()) != -1) {
output.write(byteReads);
}
data = output.toByteArray();
output.close();
input.close();
return data;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
Bitte lesen Sie diese Seite auf, wie man eine gute Frage: stackoverflow.com/help/how-to-ask. Was hast du probiert? Zeigen Sie Ihre Forschungsergebnisse. Warum funktioniert es nicht, was du versuchst? – 0xDEADC0DE