2016-06-13 7 views
0

Ich habe eine Java-Komponente, die eine CSV-Datei komprimiert und ein Array von Bytes aus einem ByteArrayOutputStream zurückgibt. Ich versuche, dies an einen Dateitransport zu übergeben, um in das Betriebssystem geschrieben zu werden. Eine Datei wird in das Betriebssystem geschrieben, aber Windows meldet, dass die Datei ungültig ist, wenn ich versuche, sie zu öffnen. Erstens, ist es möglich, ein Byte-Array an den Dateitransport zu senden? Wenn ja, dann denke ich, ich muss wahrscheinlich eine andere Frage posten, was ich falsch mache den Inhalt der CSV-zippen ...Kann ein Bytearray an einen ausgehenden Dateitransport in mule weitergeleitet werden ESB

Hier ist ein Ausschnitt aus der Java:

List<String> csvFiles = (List<String>)message.getPayload(); 

    InputStream originalFile = null; 
    ByteArrayOutputStream dest = new ByteArrayOutputStream(); 
    ZipOutputStream out = new ZipOutputStream(dest); 

    File temp = new File("users.csv"); 
    originalFile = new 
     ByteArrayInputStream((csvFiles.get(0)).toString().getBytes()); 
    ZipEntry entry = new ZipEntry(temp.getPath()); 
    out.putNextEntry(entry); 
    int count; 
    while((count = originalFile.read()) != -1) { 
     out.write(count); 
    } 
    originalFile.close(); 
    byte[] zipFileByteArray = dest.toByteArray(); 
    out.close(); 
    dest.close(); 
    return zipFileByteArray; 

Hier ist der relevante Teil meiner Flow:

<flow name="zip-csv"> 
    <component class="edu.ucdavis.iet.canvas.ZipFiles" doc:name="Java"/> 
    <file:outbound-endpoint path="${message_archive.dir}" responseTimeout="10000" doc:name="save message to dir" outputPattern="temp.zip"/> 
</flow> 
+2

Vermutung, dass Sie eine 'out.flush() 'vor dem Zugriff auf' dest.toByteArray() 'vermissen. – geert3

+0

Das hat leider nicht funktioniert. Trotzdem danke. – GarySharpe

+2

@ geert3 @GarySharpe es ist nicht so sehr ein 'out.flush()' als ein 'out.close()' vorher. Sie müssen den ZIP-Stream schließen, um die richtigen Prüfsummenberechnungen zu berechnen, damit sie bushbar werden, und zwar zusätzlich zu den Pufferspülungen. – GPI

Antwort