2016-10-03 77 views
-1
  1. 字符串testpath1 = “SMB:// host_address/File_Folder”;
  2. File testFile1 = new File(testpath1 + fi.getName());
  3. fi.write(testFile1);

此代码在Java中读取和Linux服务器写入文件。但是,创建文件(在第2行)后,文件路径变为smb:/host_address/File_Folder/File_Name如何在Java中使用 '//' 在创建文件

我想作为smb://host_address/File_Folder/File_Name文件路径。

请帮忙!

+0

问题前三行的列表是什么?它不应该是一个代码块吗? –

+0

是的,它是代码块。给出行号应该很容易阅读。 – saher

+0

我不认为人们在阅读没有行号的三行代码时会有问题。目前它没有被格式化为代码,这实际上使其更难阅读。请删除行号,并简单地用四个空格缩进代码,将其变成代码块。堆栈溢出会照顾到它的可读性:) –

回答

0

Java File类将路径名转换为抽象路径名,具体取决于它所运行的环境。 。抽象路径名有两个组件:

  1. 可选系统相关的前缀字符串,如磁盘驱动器符,“/”为UNIX根目录,或在Microsoft Windows UNC路径“\\”
  2. 的零个或多个字符串名称

我猜的Java可能会使用基于Unix系统的抽象路径名在您的情况导致失去一个/

您需要使用SmbFile类打开序列一个SmbFile SmbFile file = new SmbFile(testpath1 + fi.getName()) 有关更多信息,您可以看到SmbFile docJava File

+0

谢谢你Jainul!我正在使用FileItem(fi),其写入方法需要File对象。 fi.write(文件文件)。如果我使用SmbFile,那么如何将SmbFile对象转换为文件? – saher

+0

你可以在这里阅读更多。 http://stackoverflow.com/a/36473193/6912578 – Moonstruck

0

编辑:错误的方法。

连续四个斜线可能会起作用。在Java和其他几种语言中,//被简化为/,因为/是一个转义字符,用于插入不可见字符,如制表符和换行符。测试////

参见:What are all the escape characters in Java?

+0

根据我的理解,'\'是一个转义字符。 '////'不起作用:( – saher

+0

这听起来更准确,是的,祝你好运! – davidtheterp

0

没有得到解决使用“//”在Java中,但如果任何开发人员要使用Java编程,然后 Linux服务器上上传文件,他/她可以使用下面的代码片段。思想可能会对像我这样的开发人员有所帮助:)

SmbFile originalFile = new SmbFile(filePath + fi.getName()); 
InputStream in; 
in = fi.getInputStream(); //fi is FileItem 
SmbFileOutputStream out; 
out = new SmbFileOutputStream(originalFile); 
IOUtils.copy(in, out); 
in.close(); 
out.close();