2017-12-05 11 views
0

uploadAttachemntメソッドを使用してzipファイルをアップロードしようとしましたが、ここで出力としてsecureHashが取得されました。 openAttachmnetメソッドへの入力としてハッシュを使用して同じ添付ファイルをダウンロードしようとしましたが、私はInputStreamを取得しました。 BuffeReaderを使用してinputStreamの内容を読み取ろうとしたとき、暗号化されています。私はファイルを解凍して読み込み、zipファイルの内容を読み込むためにこのパッケージを "import java.util.zip.ZipEntry"にしなければならないことに気付きました InputStreamを使ってzipファイルの内容を読むことができるかどうかは分かりません。 InputStreamを使用してzipファイルの内容を読み取るにはどうすればよいですか?ファイルを解凍してアップロードする必要はありませんか?Cordaの添付ファイル:

fun main(args: Array<String>) :String { 
    require(args.isNotEmpty()) { "Usage: uploadBlacklist <node address>" } 
    args.forEach { arg -> 
     val nodeAddress = parse(args[0]) 
     val rpcConnection = CordaRPCClient(nodeAddress).start("user1", "test") 
     val proxy = rpcConnection.proxy 

     val attachmentInputStream = File(args[1]).inputStream() 
     val attachmentHash = proxy.uploadAttachment(attachmentInputStream) 
     print("AtachmentHash"+attachmentHash) 


     // Download the attachment 
     val inputString = proxy.openAttachment(attachmentHash).bufferedReader().use { it.readText() } 
     println("The contents are ") 
     print(inputString) 

     val file = File("OutputFile.txt") 
     file.writeText(inputString) 
     rpcConnection.notifyServerAndClose() 

    } 

    return("File downloaded successfully in the path") 
} 

答えて

0

あなたはInputStreamJarInputStreamopenAttachmentによって返さ変換する必要があります。あなたは、エントリを検索し、その内容を読み取るためにJarInputStreamのメソッドを使用することができます。

val attachmentDownloadInputStream = proxy.openAttachment(attachmentHash) 
val attachmentJar = JarInputStream(attachmentDownloadInputStream) 

while (attachmentJar.nextEntry.name != expectedFileName) { 
    attachmentJar.nextEntry 
} 

val contents = attachmentJar.bufferedReader().readLines() 

例えば、ここではブラックリストのサンプルCorDappのRPCクライアントのコードを見て取る:https://www.corda.net/samples/を。

+0

ありがとうございました。 JarInputStreamはjarファイルの内容のみを取りませんか?しかし、上記のコードを試しましたが、内容はまだ空です。 'Startup took 2424 msec AtachmentHash709FF97D2CAE131B0B8503DF49B897412DE736AAB9519D3D0BDC473559960B70内容は[]'です。助けてください – user2670611

+0

あなたが探しているJARエントリを探していますか?あなたはそれを読む前に、正しいエントリーに移動する必要があります。 – joel

+0

うん。私はその部分を逃した。私は最初に1つのジッパー内に多くのファイルを持っていたので、ファイルを繰り返し処理しなければなりませんでした。ジョエルに感謝します。 :) – user2670611

0

私はzipファイルの中に多くのファイルを持っていました。だから私はこのコードを試して、それは正常に働いた。あなたの入力joelをありがとう。

// downloading the attachment 
     val attachmentDownloadInputStream = proxy.openAttachment(attachmentHash) 
     val attachmentJar = JarInputStream(attachmentDownloadInputStream) 
     var contents ="" 

     //Reading the contents 
     while(attachmentJar.nextJarEntry!=null){ 
      contents = contents + attachmentJar.bufferedReader().readLine() 

     } 
     println("The contents are $contents")