JSch - невозможно перечислить некоторые пути к файлам, содержащие многобайтовые символы
Я пытаюсь получить список файлов из папки на сервере Windows SFTP с помощью JSch. Одно из поведения, которое я вижу, это:
После определенного количества символов файл даже не попадает в список, и исключение не выдается.
Например:
Файл, который не указан в списке: C: / Data / Thai-Han-Test1 / All_testcases_special_characters / Special_characters / Multilinguage_Characters_list / Хан / 年月 世界需要沟通 ,请 年月 将于年月 年月 - - - 日Copy 统一码国际研讨会现在开始注册 Copy Copy - Copy2.txt
Файл, который отображается в списке: C: / Data / Thai-Han-Test1 / All_testcases_special_characters / Special_characters / Multilinguage_Characters_list / Хан / 年月 世界需要沟通 ,请 年月 年月 年月 - - - - - -本 国际研讨会现在开始注册。 Copy - Copy3.txt
Чтобы получить максимальную длину пути к файлу, который можно перечислить, я удалил один дополнительный символ 次 из первой строки, и это сработало.
Я попытался с намного большей строкой с английскими символами также, и это было перечислено также.
Мой вопрос - есть ли какие-либо ограничения на длину символа с точки зрения JSch, так как я могу перечислить оба файла, выполнив команду dir на самом сервере.
Ниже приведен фрагмент кода для справки, где для заданного списка путей к папкам файлы добавляются в список.
var srcFilePathsBuffer = new ListBuffer[String]()
var srcFilePathsList = List[String]()
var folderFilesList = List[Any]()
for (sftpFolderPath <- sftpFolderPathsList) {
c.cd(sftpFolderPath)
folderFilesList = c.ls(sftpFolderPath).asScala.toList
LOG.debug("folderFilesList: " + folderFilesList)
if (folderFilesList.size > 0)
for (i <- 0 to folderFilesList.size - 1) {
val entry = folderFilesList(i).asInstanceOf[ChannelSftp#LsEntry]
LOG.debug("Entry: " + entry)
var entryName = entry.getFilename
if (!entry.getAttrs.isDir() && !entry.getFilename.equals(".") && !entry.getFilename.equals("..")) {
LOG.debug(entryName + " is file")
srcFilePathsBuffer += sftpFolderPath + "/" + entryName
}
}
}
srcFilePathsList = srcFilePathsBuffer.toList
srcFilePathsList
Спасибо за вашу помощь!