就是现在有一个byte数组,里边放的是文件的二进制流  怎么能得到这个文件的文件名和文件扩展名?哪位高手给指点下呗!

解决方案 »

  1.   

    流的byte数组是文件的内容,
    那里有文件名和扩展名的信息。
    无解。
      

  2.   

    你的意思是:文件名也放在byte数组里? 那就算下长度读呗。
      

  3.   

    根据文件内容反过来推文件格式?
    这个
    你得先了解各种文件格式是啥才能推
    我只知道pdf的是以pdfxxx开头的
      

  4.   

    这个有难度,文件内容跟文件名一般没什么关系,也就是说不修文件改内容的情况下,文件也可以随便改名。也就是说你把文件读到byte数组后,byte数组就已经丢失了文件名和扩展名信息
    如果你的文件内容是遵守某种协议的,比如像xml文件,规定文件的编码什么的,如果你的文件内容也规定了文件名和扩展名,那么可以解析你的二进制流去获取,否则,很难。就哪怕向LS说的,某些需要特殊的阅读器的特殊文件,文件开始的头一部分字节可能有对文件类型的一些描述,但文件的扩展名也是可以随便被人修改的,比如 a.pdf可以被修改为a.pdf.txt,此时,扩展名如果按文件的类型来判断,那就是pdf类型,如果按文件系统来判断,那扩展名就是txt
    当然,也可以通过某种特别笨的方法,就是把byte数组信息输出到某个文件,然后通过调用文件内容比较,一个个判断系统原来的文件,找到内容一致的文件,就可知道文件名和扩展名了。
      

  5.   

    上面有人说了,但你这个缺条件啊,it depends..
      

  6.   

    可以猜测出文件类型,不过你得有一个对应的文件类型查找表才行。
    比如gif格式文件开头就可能是GIF89a,可执行文件开头就是MZ..等等。
      

  7.   

    以前见到过,好象有什么分隔符boundary什么的,记不清楚了