jcifs.smb.SmbException: система не может найти указанный файл?

При запуске кода ниже я получаю исключение

jcifs.smb.SmbException: система не может найти указанный файл

Код:

public void m1(String b) throws IOException {
        // TODO Auto-generated method**strong text** stub

        BufferedReader br=null;
        String urlToBackUpFile = "smb://" +b +"/" + "c$/Program Files/Office/Config/OfficeSyncData.ini";
        String cp="smb://" +b +"/" + "c$/Program Files/Office/Config/OfficeSyncData.txt";
        System.out.println("smb folder of source file" + urlToBackUpFile);
        NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, "usrname", "passwd");


          SmbFile dir = new SmbFile(cp, auth);
          SmbFileInputStream in = new SmbFileInputStream( dir );
         // br = new BufferedReader(new InputStreamReader(in));


          System.out.println(dir.getDate());
          SmbFile dest = new SmbFile (urlToBackUpFile,auth);
          //count.copyTo(dest);
          dir.copyTo(dest);

    }

Как решить?.


person Kishore kumar    schedule 10.07.2015    source источник
comment
Находится ли b в указанном пути?   -  person Leonid Glanz    schedule 02.10.2015
comment
Каково значение b и к какой строке относится исключение?   -  person Sva.Mu    schedule 02.10.2015


Ответы (1)


Без всей трассировки стека я не могу быть полностью уверен, но вам может понадобиться указать в пути символ пробела.

Попробуй это:

String urlToBackUpFile = "smb://" +b +"/" + "c$/Program\\ Files/Office/Config/OfficeSyncData.ini";

И убедитесь, что если «b» содержит пробел, вы делаете то же самое.

EDITED: также попробовать: можете ли вы указать путь к местоположению, которое не содержит пробелов? это докажет, что синтаксис пробела является источником ваших проблем...

person gmcontessa    schedule 04.10.2015
comment
Вам понадобится как минимум два ` \ `, если вы хотите избежать этого, то есть program\\ files. Хотя не говорю, что поможет. - person geert3; 04.10.2015
comment
извините, отредактировал код, чтобы включить двойной '\' . Возможно, в любом случае стоит попробовать, так как язык оболочки терминалов Linux (даже при эмуляции в Windows) требует экранирования пробела. - person gmcontessa; 04.10.2015