use*_*660 3 java regex android dropbox
我正在尝试使用Dropbox V2 API将我的应用程序数据文件(SQLite和首选项)从我的Android应用程序上传到我的Dropbox帐户.我可以成功启动客户端:
// Dropbox authentication
config = new DbxRequestConfig("dropbox/liikennevalot");
client = new DbxClientV2(config, ACCESS_TOKEN);
Run Code Online (Sandbox Code Playgroud)
我的应用说链接已启动,列出了我的用户凭据:
FullAccount account = client.users().getCurrentAccount();
Run Code Online (Sandbox Code Playgroud)
我可以列出我的应用程序Dropbox目录中的文件:
ListFolderResult result = client.files().listFolder("");
while (true) {
for (Metadata metadata : result.getEntries()) {
Log.d("DROPBOX", metadata.getPathLower());
}
if (!result.getHasMore()) {
break;
}
result = client.files().listFolderContinue(result.getCursor());
}
Run Code Online (Sandbox Code Playgroud)
但是当试图从Android上传到Dropbox app根目录时
try (InputStream in = new FileInputStream(getExternalFilesDir(null) + "/" + "testi.txt")) {
FileMetadata metadata = client.files().uploadBuilder("")
.withMode(WriteMode.OVERWRITE)
.uploadAndFinish(in);
}
Run Code Online (Sandbox Code Playgroud)
我得到一个例外
java.lang.IllegalArgumentException: String 'path' does not match pattern
Run Code Online (Sandbox Code Playgroud)
它指向client.files().uploadBuilder("")的代码行...
检查异常堆栈,我发现在Dropbox API V2中,类CommitInfo有一个构造函数,它给了我这个异常
} else if(!Pattern.matches("(/(.|[\\r\\n])*)|(ns:[0-9]+(/.*)?)", path)) {
throw new IllegalArgumentException("String \'path\' does not match pattern");
Run Code Online (Sandbox Code Playgroud)
我不知道从那个REGEX有什么意义的Java REGEX,所以我真的不知道是什么导致我这个例外.Dropbox API V2文档说""表示应用程序在Dropbox中的根文件夹,因此我的client.files().uploadBuilder("")...应该是完美的有效代码.
我还尝试在我的应用程序的Dropbox目录下创建一个子目录"test",并将代码更改为client.files().uploadBuilder("test")...但每次都得到相同的异常.
任何人都可以帮我解释那个REGEX,这样可以给我一个关于我的代码有什么问题的线索吗?
Gre*_*reg 11
您传递给的参数uploadBuilder应该是Dropbox中要上传文件的路径.你传入的""是root本身,它不是文件上传的允许位置,因为它不包含文件名.
相反,你应该传入一个值"/test.txt",它会告诉Dropbox将内容上传为root中名为"test.txt"的文件.
或者,例如,如果您指定"/Documents/test.txt",它将作为名为"test.txt"的文件上载到名为"Documents"的文件夹中.
| 归档时间: |
|
| 查看次数: |
3526 次 |
| 最近记录: |