从java存档中获取.tsv文件,而无需解压缩存档

从java存档中获取.tsv文件,而无需解压缩存档,java,Java,我有一个包含8.tsv文件的存档\u 2016\u 08\u 17.zip。我需要提取名为hit_data.tsv的文件并将其上载到bigquery。这些文件位于谷歌云平台的一个存储桶中 有人能给我一个简单的程序,打开档案,找到正确的文件,然后把它的行打印到屏幕上。我可以从那里拿走。我的想法是将路径gs://path\u name/*hit\u data.tsv替换为包含hit\u data.tsv数据的缓冲区 public static void main(String[] args)

我有一个包含8.tsv文件的存档
\u 2016\u 08\u 17.zip
。我需要提取名为
hit_data.tsv
的文件并将其上载到bigquery。这些文件位于谷歌云平台的一个存储桶中

有人能给我一个简单的程序,打开档案,找到正确的文件,然后把它的行打印到屏幕上。我可以从那里拿走。我的想法是将路径
gs://path\u name/*hit\u data.tsv
替换为包含
hit\u data.tsv
数据的缓冲区

    public static void main(String[] args) {
    Pipeline p = DataflowUtils.createFromArgs(args);

    p
            .apply(TextIO.Read.from("gs://path_name/*hit_data.tsv"))  
             \\.apply(Sample.<String>any(10))  
            .apply(ParDo.named("ExtractRows").of(new ExtractRows('\t', "InformationDateID")))
            .apply(BigQueryIO.Write
                    .named("BQWrite")
                    .to(BigQuery.getTableReference("ddm_now_apps", true))
                    .withSchema(getSchema())
                    .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND)
                    .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED));

    p.run();
}
publicstaticvoidmain(字符串[]args){
管道p=DataflowUtils.createFromArgs(args);
P
.apply(TextIO.Read.from(“gs://path\u name/*hit\u data.tsv”))
\\.适用(任何样本(10))
.apply(ParDo.named(“ExtractRows”).of(新的ExtractRows('\t',“InformationDateID”))
.apply(BigQueryIO.Write
.命名为(“BQWrite”)
.to(BigQuery.getTableReference(“ddm\u now\u apps”,true))
.withSchema(getSchema())
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.Write\u追加)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE如果需要);
p、 run();
}

根据定义,不解压缩就无法从zip存档中读取文件。

我们有一个类。它具有返回项枚举的方法。现在,如果我们知道zip中文件的名称和路径,就可以找到条目或使用方法


然后,在最后一步,我们可以使用方法来只读我们想要的条目。

也许吧,但我不想访问超过我需要的硬盘驱动器。我当然可以访问该文件,而无需将解压后的文件保存在硬盘上。当然,但这不是你要问的-你应该更新你的问题以澄清我试图以最有意义的方式提问。我想你知道我的意思。