youlookwhat/BySMB

你好,怎么知道获取的文件列表是类型?

Opened this issue · 7 comments

smb.listFile(object : OnReadFileListNameCallback {
            override fun onFailure(message: String) {

            }

            override fun onSuccess(fileNameList: List<String>) {
                files = fileNameList
                for (i in fileNameList) {
                    Log.v("xxx", i)
                }
            }
        })

类型是string,怎么知道文件类型,比如zip, txt, 文件夹,jpg等

这是文件路径,应该可以通过路径得到后缀名吧,通过 / 拆分,然后通过 . 截取后面的后缀名

开始想过这种方法,但是不行,比如一个文件它没有后缀名,但它不是文件夹,就不好整
后面又重新实现了一个OnReadFileInformationCallback,返回的是Information,但是也不能判断是不是文件夹

fun listFileInformation(path: String = "", searchPattern: String? = null, callback: OnReadFileInformationCallback) {
        if (bySmb?.getConnectShare() == null) {
            callback.onFailure("配置错误")
            return
        }
        val fileNameList: ArrayList<FileIdBothDirectoryInformation> = arrayListOf<FileIdBothDirectoryInformation>()
        try {
            val list = bySmb?.getConnectShare()!!.list(path, searchPattern)
            callback.onSuccess(list)
        } catch (e: Exception) {
            e.printStackTrace()
            callback.onFailure(e.message ?: "获取文件名失败")
        }
    }

一个文件它没有后缀名,这个要判断类型本来就不好处理,据我所知需要将文件下载到本地,然后再通过什么方式判断。

File类里面有个isDirectory()方法,就是有没有办法让它返回一个File类型的list

你是说通过文件流得到文件类型:通过文件流获取文件类型

是的,就是这种,就是怎么拿到这个文件流 ^_^

你有文件的路径了,不是就可以得到文件流了嘛,你相当于有了这个
image