使用空值目录路径通过SFTP Jsch错误将文件从Windows上载到Unix

时间:2016-12-19 03:28:46

标签: java file-upload sftp jsch

我正在使用JSch通过sftp上传文件。

我将文件从Windows上传到unix服务器

使用

上传即时消息
File file = FiletoPath;
sftp.put(new FileInputStream(file), file.getName());

因此:

String[] split = file.getName().split("\\");
sftp.put(new FileInputStream(file), split[split.length-1]);

这将出现,因为getName()将返回文件名或绝对路径:

  

\\东西\东西\东西\文件$ \东西\东西\ myfilename.txt

当我尝试拆分它时会有错误

{{1}}

我不在乎。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我已经发现了它。

基本上由于

  

\\这个反斜杠它们将具有空值并将抛出异常

我使用的是org.google.guava.Splitter.jar: 在线下载org.google.guava.Splitter.jar

在我的代码段下面:

//Declaration of JSch Connection session,
//channel and ChannelSftp
//filetype: MultiPartFile

String filename = file.getName();
Iterables<String> itr = Splitter.on("\\").trimResults().omitEmptyStrings().split(filename);
String[] split = Iterables.toArray(itr);

ChannelSftp.put:

//Change Directory to upload the file:
String uploadDirectoryPath = "/usr/name/profile/toStorePath/files/";

try{
     csftp.cd(uploadDirectoryPath);
     csftp.put(file.getInputStream(), split[split.length-1]);
} catch(SftpException | IOException e){
    e.printStackTrace();
}