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)


Без цялото проследяване на стека не мога да бъда напълно сигурен, но може да се наложи да посочите в пътя знака за интервал за escape.

Опитайте тази:

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

И се уверете, че ако "b" съдържа интервал, вие правите същото.

РЕДАКТИРАНО: също да опитате: можете ли да посочите пътя към местоположение, което не съдържа никакви интервали? това ще докаже дали пространственият синтаксис е източникът на вашите проблеми...

person gmcontessa    schedule 04.10.2015
comment
Ще ви трябват поне две ` \ `, ако искате да го избягате по този начин, т.е. program\\ files. Не казвам обаче, че ще помогне. - person geert3; 04.10.2015
comment
съжалявам, редактирах кода, за да включва двойното '\'. Може би все пак си струва да опитате, тъй като езикът на shell на терминалите на linux (дори когато се емулира в windows) се нуждае от екраниране на пространството - person gmcontessa; 04.10.2015