本地开发服务器上的Google云端存储:文件名无效

时间:2013-07-05 16:38:24

标签: java google-app-engine google-cloud-storage

我正在尝试使用Google云端存储客户端库将字节数组“上传”到本地GAE / J(1.8.1,Eclipse Juno)开发服务器:

byte[] byteContent = new byte[] {1, 2, 3, 4, 5};
GcsFilename fileName = new GcsFilename("MyBucket", "foo");
GcsOutputChannel outputChannel =
GcsServiceFactory.createGcsService().createOrReplace(fileName, GcsFileOptions.getDefaultInstance());
outputChannel.write(ByteBuffer.wrap(byteContent));
outputChannel.close();

尝试此操作时,会抛出以下异常:

WARNING: Caught IOException while attempting to write blob
java.io.FileNotFoundException: C:\dev\workspace\gaeTestProjekt\war\WEB-INF\appengine-generated\encoded_gs_key:L2dzL015QnVja2V0L2Zvbw (The filename, directory name, or volume label syntax is incorrect)

鉴于目标文件名称中存在额外的冒号(encoded_gs_key:L2dzL015QnVja2V0L2Zvbw),这是有道理的。

问题是,如何阻止本地开发服务器尝试创建无效的文件名?

3 个答案:

答案 0 :(得分:4)

我终于找到了错误的来源。如果我在truecrypt驱动器中运行开发服务器,则会发生错误。如果我在外面运行它,错误就消失了。所以这似乎是truecrypt处理文件的问题。

答案 1 :(得分:2)

我认为你最好的选择是在这里挖掘enable file name character translation

答案 2 :(得分:2)

在我的例子中,它是文件系统类型。我将我的文件保存在usb磁盘上,这是FAT32的兼容性。在我改为NTFS后,现在一切正常。多么讨厌的小虫子。

PS。 @Andre的回答激发了我的灵感。我无法想象他已经找到了什么。