我熟悉AWS Java SDK,我也尝试浏览相应的Javadoc,但我不知道如何创建子目录,即bucket中的目录对象,以及如何将文件上载到它。
假设bucketName
和dirName
对应于已经存在的bucket(具有公共权限)和需要在bucket内创建的新(对象)目录(即bucketName/dirName/)
我尝试了以下方法:
AmazonS3Client s3 = new AmazonS3Client(
new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY));
s3.createBucket(bucketName + "/" + dirName); //throws exception
这将在第二行引发异常。
一个创建子目录并将文件上传到其中的简短片段将不胜感激。
在较新版本的SDK中,您可以这样做(不需要创建空的输入流)来创建一个空文件夹:
String key = parentKey + newFolderName;
if (!StringUtils.endsWith(key, "/")) {
key += "/";
}
PutObjectRequest putRequest = PutObjectRequest.builder()
.bucket(parent.getBucket())
.key(key)
.acl("public-read")
.build();
s3Client.putObject(putRequest, RequestBody.empty());
S3不会像我们在操作系统上那样看到目录。以下是您如何创建目录:
public static void createFolder(String bucketName, String folderName, AmazonS3 client) {
// create meta-data for your folder and set content-length to 0
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(0);
// create empty content
InputStream emptyContent = new ByteArrayInputStream(new byte[0]);
// create a PutObjectRequest passing the folder name suffixed by /
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,
folderName + SUFFIX, emptyContent, metadata);
// send request to S3 to create folder
client.putObject(putObjectRequest);
}
正如卡萨布兰卡所说,您可以将文件上传到如下目录:
s3.putObject("someBucket", "foo/bar1", file1);
详细阅读整个教程,最重要的是你会找到如何删除目录的信息。
S3中没有“子目录”。桶里有桶,桶里有键。
通过使用前缀搜索,可以模拟传统目录。例如,您可以将以下密钥存储在存储桶中:
foo/bar1
foo/bar2
foo/bar3
blah/baz1
blah/baz2
然后做一个前缀搜索foo/
,你会得到:
foo/bar1
foo/bar2
foo/bar3
请参阅Amazon3.list对象
了解更多详细信息。
更新:假设您已经有一个现有的存储桶,该存储桶下的密钥将包含/
:
s3.putObject("someBucket", "foo/bar1", file1);
s3.putObject("someBucket", "foo/bar2", file2);
...
然后你可以列出从foo/
开始的所有键:
ObjectListing listing = s3.listObjects("someBucket", "foo/");
创建目录 创建目录 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * *//* * 程序清单:创建目录 * * 程序会创建一个操作文件的函数并导出到msh命令列表 * 在函数
您好,我想用java创建目录和子目录。我的目录结构是从当前应用程序目录开始的,意思是在当前项目目录中,如下所示。。。 我知道如何创建目录,但我需要创建子目录,我用下面的代码尝试了,下一步应该做什么?
我经常使用标志遍历多个子目录,并提取特定文件或文件类型,而不必单独明确引用每个文件。例子: 这会在我的目标路径中创建与最初检索DLL的源完全相同的目录结构。例如,如果我从上面的检索了一个DLL,那么它会将该DLL放在路径中。 这种行为可以通过以下方式进行修改: 但显然,这意味着我必须单独引用依赖关系中的每个子目录。 因此,64000美元的问题是,如何防止在目标中重新创建相同的目录,而不必显式引用源
创建目录权限 如果你想创建一个目录并授予777权限,你需要怎么做?查看Go的API文档我们可以这样写。 源文件为mkdir.go。 package main import ( "fmt" "os" ) func main() { err := os.MkdirAll("/tmp/gotest/", 0777) if err != nil { panic(er
问题内容: 我正在创建一个简单的程序,尝试从磁盘中读取“ conf / conf.xml”,但是如果此文件或目录不存在,则会创建它们。 我可以使用以下代码执行此操作: 我的问题是,这是否真的是最优雅的方式?需要创建两个简单的路径以在新的子目录中创建新文件似乎多余。 问题答案: 您可以将声明为,而不是。然后,您可以使用,请参见下面的示例: 或者,按原样使用代码,您可以使用:
问题内容: 以前,我要求如何在FileTable不使用File I / OAPI的情况下在其中创建目录。现在,我想为我刚刚创建的父目录创建一个子目录。在插入期间如何分配我的父母?似乎是一个计算列。 这创建了我的父母… 如何在FileTable中为此父级创建子目录? 问题答案: 这是我最终用来创建子目录的原因,因为它不会为我生成新值-它只会解释现有值。 上面的代码块利用了在此发现的默认path_lo