Blockchain 科尔达附件:

Blockchain 科尔达附件:,blockchain,corda,Blockchain,Corda,我尝试使用UploadAttachment方法上载zip文件,其中我得到了一个secureHash作为输出。 我尝试使用散列作为openAttachmnet方法的输入来下载相同的附件,我得到了一个InputStream。 当我尝试使用BufferReader读取inputStream的内容时,它是加密的。我意识到我必须解压文件并读取它,所以我得到了这个包“import java.util.zip.ZipEntry”来读取zip文件内容 我不确定是否可以使用InputStream读取zip文件内容

我尝试使用UploadAttachment方法上载zip文件,其中我得到了一个secureHash作为输出。 我尝试使用散列作为openAttachmnet方法的输入来下载相同的附件,我得到了一个InputStream。 当我尝试使用BufferReader读取inputStream的内容时,它是加密的。我意识到我必须解压文件并读取它,所以我得到了这个包“import java.util.zip.ZipEntry”来读取zip文件内容 我不确定是否可以使用InputStream读取zip文件内容。 如何使用InputStream读取zip文件内容?如果不是,我应该解压并上传文件吗

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")
}
fun main(args:Array):字符串{
require(args.isNotEmpty()){“用法:上传黑名单”}
args.forEach{arg->
val nodeAddress=parse(参数[0])
val rpcConnection=CordaRPCClient(nodeAddress).start(“user1”,“test”)
val proxy=rpcConnection.proxy
val attachmentInputStream=文件(args[1]).inputStream()
val attachmentHash=proxy.uploadAttachment(attachmentInputStream)
打印(“AtachmentHash”+附件)
//下载附件
val inputString=proxy.openAttachment(attachmentHash).bufferedReader()。使用{it.readText()}
println(“内容为”)
打印(输入字符串)
val file=file(“OutputFile.txt”)
file.writeText(inputString)
rpcConnection.notifyServerAndClose()
}
return(“路径中成功下载的文件”)
}

您需要将
openAttachment
返回的
InputStream
转换为
JarInputStream
。然后,您可以使用
JarInputStream
)方法来定位条目并读取其内容:

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

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

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

例如,在此处查看黑名单示例CorDapp的RPC客户端代码:。

您需要将
openAttachment
返回的
InputStream
转换为
JarInputStream
。然后,您可以使用
JarInputStream
的方法查找条目并读取其内容:

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

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

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

例如,在这里查看黑名单示例CorDapp的RPC客户端代码:。

我在zip文件中有许多文件。所以我尝试了这个代码,效果很好。谢谢你的意见,乔尔

// 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")

我在zip文件中有很多文件。所以我尝试了这个代码,效果很好。谢谢你的意见,乔尔

// 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")

谢谢你,乔尔。JarInputStream不是只接受jar文件内容吗?然而,我尝试了上面的代码,但内容仍然为空`启动时间为2424毫秒Atachmenthash709FF97D2CAE131B0B8503DF49B897412DE736AAB9519D3D0BDC473559960B70内容为[]`。请问您是否找到了要查找的JAR条目?在尝试阅读之前,你需要移动到正确的条目。是的。我错过了那部分。因为我在一个zip中有很多文件,所以首先我必须遍历这些文件,然后它工作得很好。非常感谢乔尔谢谢你,乔尔。JarInputStream不是只接受jar文件内容吗?然而,我尝试了上面的代码,但内容仍然为空`启动时间为2424毫秒Atachmenthash709FF97D2CAE131B0B8503DF49B897412DE736AAB9519D3D0BDC473559960B70内容为[]`。请问您是否找到了要查找的JAR条目?在尝试阅读之前,你需要移动到正确的条目。是的。我错过了那部分。因为我在一个zip中有很多文件,所以首先我必须遍历这些文件,然后它工作得很好。非常感谢乔尔