2016-04-04 8 views
-1

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?

+0

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

Antwort

2

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

     } 

    } 
0

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