Как скопировать большой файл smb в другую папку с помощью smbj? - PullRequest
0 голосов
/ 30 октября 2019

Я хочу скопировать большой файл (более 3 ГБ) из smb в другой smb

В исходящем потоке SmbFile нет байта. ниже метод не копирует файлы

com.hierynomus.smbj.share.File srcFile = srcshare.openFile(srcFilename, EnumSet.of(AccessMask.GENERIC_READ), null, SMB2ShareAccess.ALL, SMB2CreateDisposition.FILE_OPEN, null); 



com.hierynomus.smbj.share.File DestFile = destshare.openFile(
                      destinationFilename,
                      EnumSet.of(AccessMask.GENERIC_WRITE),
                      EnumSet.of(FileAttributes.FILE_ATTRIBUTE_NORMAL),
                      EnumSet.of(SMB2ShareAccess.FILE_SHARE_WRITE),
                      (overwrite ? SMB2CreateDisposition.FILE_OVERWRITE_IF : SMB2CreateDisposition.FILE_CREATE),
                      EnumSet.noneOf(SMB2CreateOptions.class));

                 copy(srcFile.getInputStream(),DestFile.getOutputStream());



public static void copy(InputStream in, OutputStream out) throws IOException {
    ReadableByteChannel source = Channels.newChannel(in);
    WritableByteChannel target = Channels.newChannel(out);
    ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024);
    while (source.read(buffer) != -1) {
        buffer.flip(); // Prepare the buffer to be drained
        while (buffer.hasRemaining()) {
            target.write(buffer);
        }
        buffer.clear(); // Empty buffer to get ready for filling
    }

    source.close();
    target.close();

}
...