rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

android開発 jcifs-ngで接続したSMBサーバーファイルをandroid端末にコピーする

2021 Aug. 15.

    /*
     * リモートのSMBファイルをandroid端末にコピーする
     *  コピー先は、android端末の外部ストレージのアプリキャッシュ領域
     *  smbFile  コピー元リモートのSMBファイル
     *  返り値 コピー先ファイル
     */
    private fun cpSmbFile2android(smbFile: SmbFile): File? {
        if ( !smbFile.isFile ) {
            return null
        }
        val fileName = smbFile.name
        val exterCacheFile = File(this.externalCacheDir!!.path + "/" + fileName)
        // copy remote smb-file to local
        val inStream = smbFile.openInputStream()
        val fileOutStream = FileOutputStream(exterCacheFile)
        val buf = ByteArray(1024)
        var len: Int = 0
        while (true) {
            len = inStream.read(buf)
            if (len < 0) break
            fileOutStream.write(buf)
        }
        fileOutStream.flush();
        fileOutStream.close();
        inStream.close();
        return exterCacheFile
    }