java.net.UnknownHostException: ..__ MSBROWSE__ при использовании jcifs

Я пытаюсь скопировать файл из локального каталога в общий сетевой ресурс в окне Windows. Я использую jcifs 1.3.17. Я успешно устанавливаю соединение с местом назначения, фактически создаю файл там, получаю статус canWrite «true», но когда я пытаюсь скопировать содержимое локального файла в удаленный файл, я получаю следующую ошибку:

jcifs.smb.SmbException: Failed to connect to server
java.net.UnknownHostException: ..__MSBROWSE__.<01>
   at jcifs.netbios.NbtAddress.doNameQuery(NbtAddress.java:317)

. . .

фрагмент кода:

        SmbFile source = new SmbFile(original);
        SmbFile dest = new SmbFile (target,auth);
        dest.createNewFile();
        boolean canWrite = dest.canWrite();
        source.copyTo(dest);

Я не понимаю ... если я могу создать файл в месте назначения, а smb видит, что я могу писать в него, почему doCopy не работает?


person scooter4j    schedule 13.05.2015    source источник


Ответы (1)


Я не очень понимаю, но ... попробуйте это. Оно работает!

    String source = "smb://SERVER/PATH/FILE";
    NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, "USERNAME", "PASSWORD");
    SmbFile sourceFile = new SmbFile(source, auth);
    String destination = "LOCAL_PATH_TO_FILE";

    byte[] buffer;
    int length;

    try {
        FileOutputStream fileOutputStream = new FileOutputStream(destination);
        InputStream fileInputStream = sourceFile.getInputStream();
        try {
            buffer = new byte[16 * 1024 * 1024];
            while ((length = fileInputStream.read(buffer)) > 0) {
                fileOutputStream.write(buffer, 0, length);
            }
        } finally {
            fileInputStream.close();
            fileOutputStream.close();
        }
    } catch (SmbException e) {
        // Error handling.    
    } catch (FileNotFoundException e) {
        // Error handling.
    } catch (IOException e) {
        // Error handling.
    }

Кредиты идут на этот вопрос и дают ответ: Как скопировать файл из общего ресурса smb на локальный диск с помощью jcifs в Java?

person iaforek    schedule 15.07.2015
comment
Я бы заменил try-finally на try с ресурсом. - person rkosegi; 15.07.2015
comment
@rkosegi Вы правы. Используйте try-with-resource при использовании Java 1.7. Мое решение для 1.6. - person iaforek; 15.07.2015