Google cloud storage 使用Java的Google云存储gsutil工具

Google cloud storage 使用Java的Google云存储gsutil工具,google-cloud-storage,Google Cloud Storage,根据谷歌文档,如果我们每天都有大约30G文件(从50MB到4GB)需要上传到谷歌云存储,那么gsutil可能是唯一合适的选择,不是吗 我想用Java调用gsutil命令,现在下面的代码可以工作了。但是如果我删除那个while循环,程序将在runtime.exec(command)之后立即停止,但是python进程已经启动,但是没有上传,它很快就会被终止。我想知道为什么 我读《斯特尔河》的原因是受到 我决定gsutil是否通过读取util状态输出的最后一行来完成执行,但这是一种可靠的方法吗?有没有

根据谷歌文档,如果我们每天都有大约30G文件(从50MB到4GB)需要上传到谷歌云存储,那么gsutil可能是唯一合适的选择,不是吗

我想用Java调用gsutil命令,现在下面的代码可以工作了。但是如果我删除那个while循环,程序将在runtime.exec(command)之后立即停止,但是python进程已经启动,但是没有上传,它很快就会被终止。我想知道为什么

我读《斯特尔河》的原因是受到

我决定gsutil是否通过读取util状态输出的最后一行来完成执行,但这是一种可靠的方法吗?有没有更好的方法来检测gsutil执行是否在Java中结束

String command="python c:/gsutil/gsutil.py cp C:/SFC_Data/gps.txt"
            + " gs://getest/gps.txt";
 try {
        Process process = Runtime.getRuntime().exec(command);
        System.out.println("the output stream is "+process.getErrorStream());
        BufferedReader reader=new BufferedReader(new InputStreamReader(process.getErrorStream())); 
        String s; 
        while ((s = reader.readLine()) != null){
            System.out.println("The inout stream is " + s);
        }                
    } catch (IOException e) {
        e.printStackTrace();
    }

每天向地面军事系统上传30克数据的方式肯定不止一种。由于您使用的是Java,您是否考虑过使用云存储API Java客户端库?

至于使用Runtime.exec()从Java调用gsutil的具体问题,我怀疑当没有while循环时,程序会在创建子进程后立即退出,导致“process”变量被GC'ed,这可能会杀死子进程

我认为您应该等待子进程完成,这实际上就是while循环正在做的事情。或者,如果不关心输出,可以调用waitFor()并检查existValue():

根据姚志宏的解释,我画了以下图片。希望它能帮助任何和我有同样问题的人


哈,我很困惑。早些时候我发现了这个:,也称为GCS Java API,其中的文件API功能将被放弃。所以我在那个页面上找到了“GCS客户端库”,并得到了一个web应用程序的示例代码。我试过了,上传一个4GB文件大约需要20分钟,而gsutil只需要5分钟。您发送的这个用于Java应用程序,而不是web应用程序。现在,这就是我现在想要的。非常感谢。我一定会尝试一下。但是,我仍然不明白这两个Java“客户端库”之间的本质区别是什么……还有,你在这个API的可恢复上传上找到了什么吗?我只找到了web应用程序使用的RESTful API,我认为我提到的“云存储API客户端库(用于Java)”是“Google API客户端库”的一部分,它提供了访问GCS的完整功能。您可以将其视为与GCS REST API并行,但与其他Google API遵循相同的标准。您先前评论中提到的“Google云存储Java API”(文件API)和“Google云存储Java客户端库”都是针对AppEngine的。前者是AppEngine SDK的一部分,已经被弃用。后者是一个单独的客户端库,需要随应用程序一起下载和部署,它基本上包装了GCS REST API,并提供了一个更简单的界面和一些性能调优。