У меня возникла проблема при работе с удаленным общим ресурсом Windows с именем, содержащим символ '&', используя jcifs через apache-camel. Основной причиной этого является то, что, по-видимому, jcifs слишком плохо обрабатывает символ «&» при переименовании удаленного файла, в то время как Windows не имеет никаких проблем с этим.JCIFS jcifs.smb.SmbFile # renameTo не любит специальные символы, такие как '&'
public class SmbFileTest {
@Test
public void testAmperstand() throws Exception {
String targetLocation = "smb://user:[email protected]/share/hello&goodbye";
SmbFile targetLocationFile = new SmbFile(targetLocation);
if(!targetLocationFile.exists()){
targetLocationFile.mkdirs();
}
SmbFile smbFile = new SmbFile(targetLocation+"/to.tmp");
IOUtils.write("content",smbFile.getOutputStream());
SmbFile smbFileDest = new SmbFile(targetLocation+"/to.txt");
smbFile.renameTo(smbFileDest);
}
}
выше тест не пройден (JCIFS 1.3.17 < = верблюд 2.12.1)
jcifs.smb.SmbException: The process cannot access the file because it is being used by another process.
Я мог бы просто изменить имя каталога, но может быть кто-то знает лучший подход. Что, если это будет очень сложно изменить?
Кто-нибудь знает, как я могу переименовать SmB-каталог? Поскольку переименование только SmbFile создает новый каталог, но он не содержит подкаталогов исходного файла – ZelelB