将java.io.InputStream对象写入smb文件

时间:2019-07-11 18:56:04

标签: java inputstream java-io smb jcifs

我的一个Java Utility类(PGP Encryption实用程序)读取java.io.File(采用加密格式)并将其转换为java.io.InputStream对象(基本上将文件解密并转换为java.io.InputStream方法末尾的对象) 由于无法在整个应用程序中使用该实用程序类,因此无法对其进行修改。 我需要将此对象写入smb文件到需要密码验证的共享路径。如何将java.io.InputStream转换为smb文件并写入共享路径

1)是否可以使用jcifs? 2)如果可能,我们有任何示例程序吗?

2 个答案:

答案 0 :(得分:1)

对于两个常见的File对象,写过程没有区别。

final SmbFile destFile = ... //Depends on how you init SmbFile object

InputStream inputStream = ... // your InputStream with data
OutputStream outputStream = null;
try {
    outputStream = destFile.getOutputStream();

    byte[] buf = new byte[STREAM_BUFFER_SIZE];
    int read;
    while ((read = inputStream.read(buf)) > -1) {
        outputStream.write(buf, 0, read);
    }
    outputStream.flush();
} finally {
    if (inputStream != null)
        inputStream.close();
    if (outputStream != null)
        outputStream.close();
}

答案 1 :(得分:0)

InputStream fileInputStream // already filled
File newFile = diskShare.openFile(fullFileName, EnumSet.of(AccessMask.FILE_WRITE_DATA), null, SMB2ShareAccess.ALL, SMB2CreateDisposition.FILE_OVERWRITE_IF, null);
            OutputStream oStream = newFile.getOutputStream();
            oStream.write(fileInputStream.readAllBytes());
            oStream.close();