我正在从服务器获取字节数组,但不知道文件的确切扩展名,因为该文件可能是 .pdf / mp4 / docx / zip,所以在将其保存到 sdcard 后我怎么知道确切的扩展名。
任何想法?
我正在从服务器获取字节数组,但不知道文件的确切扩展名,因为该文件可能是 .pdf / mp4 / docx / zip,所以在将其保存到 sdcard 后我怎么知道确切的扩展名。
任何想法?
无法从文件内容中可靠地确定文件扩展名。这就像试图找出信封上写了什么,如果你只有信本身。
您可能会猜到,但这将是一项艰巨的任务(例如, adocx
也是一个zip
文件)。为此有专门的软件(许多操作系统都包含该file
工具),并且您可能会找到可以使用的第三方库,但即使您这样做,它仍然是一个猜测。
我宁愿专注于寻找一种方法让服务器告诉你除了内容之外的原始文件名。
没有正确的方法可以立即确定文件扩展名。
但是,您可以对特定文件类型施加条件,例如文件扩展名是否为 mp3,然后执行特定任务。为此,您可以使用FilenameFilter
.
查看how-to-find-all-files-with-certain-extension-on-android了解更多信息。
如果是自定义协议,则应将一个(或多个)字节的数据类型传递给客户端,然后根据第一个字节获取数据并在客户端添加扩展。如果它是类似 http 的协议,您可以在答案中添加一些标头。但它也需要在服务器端和客户端做。