none
c#获取文件的真实扩展名 RRS feed

  • 问题

  •    System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read);
                System.IO.BinaryReader r = new System.IO.BinaryReader(fs);
                string bx = " ";
                byte buffer;
                try
                {
                    buffer = r.ReadByte();
                    bx = buffer.ToString();
                    buffer = r.ReadByte();
                    bx += buffer.ToString();
                }
                catch (Exception exc)
                {
                    Console.WriteLine(exc.Message);
                }
                r.Close();
                fs.Close();

           return bx;

    这个方法有几个问题:

    1. 获取txt文件的扩展名,每次都不一样

    2.如果要是获得word,excel2007版本以上的以docx,xlsx扩展名的文件出来的编码是一样的

    有没有别的方法能获取真实文件扩展名的,或者这个方法什么地方不对,谢谢了!!

    2012年11月23日 6:59

答案

  • 尝试使用System.IO.Path:

     Path.GetExtension("里边是从OpenFileDialog中获取的绝对路径或者相对路径+文件名");

    我的博客园
    慈善点击,点击此处
    和谐拯救危机,全集下载,净化人心

    2012年11月23日 7:49
    版主
  • 你好,

    但如果要是判断一个.txt文件,然后把扩展名改成.ttt这个方法就不准确了

    其实 这也是 准确的 ,ttt就 表明 当前文件的后缀就是ttt,你会说,我这是从txt手动改过来的。

    你还记得有一年的一个编程大赛,有个大牛用 汇编写了个3d游戏,将文件后缀改成 jpg就是一个 小鸭子的图片,但是 改成txt后用cmd命令执行,就是一个游戏动画。这时,你觉得这个文件的类型是图片呢还是txt呢?后缀名本来就是彼此的一个约定,当OS 检测到相应的后缀,就调对应的程序来处理它,处理不了,是user的问题。而不是这个application有问题。


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年11月26日 14:05
    版主
  • 谢谢你的回答,但如果要是判断一个.txt文件,然后把扩展名改成.ttt这个方法就不准确了!!!!有没有什么好的方法获取文件的真正扩展名!!!

    前面两位已经说清楚了,我画蛇添足一下。

    没有你所谓的真正扩展名,扩展名只有这一个。觉得你应该判断文件是文本文件还是二进制文件,而不是通过文件的扩展名。

    2012年11月27日 5:44

全部回复

  • 尝试使用System.IO.Path:

     Path.GetExtension("里边是从OpenFileDialog中获取的绝对路径或者相对路径+文件名");

    我的博客园
    慈善点击,点击此处
    和谐拯救危机,全集下载,净化人心

    2012年11月23日 7:49
    版主
  • 谢谢你的回答,但如果要是判断一个.txt文件,然后把扩展名改成.ttt这个方法就不准确了!!!!有没有什么好的方法获取文件的真正扩展名!!!
    2012年11月25日 11:00
  • 你好,

    但如果要是判断一个.txt文件,然后把扩展名改成.ttt这个方法就不准确了

    其实 这也是 准确的 ,ttt就 表明 当前文件的后缀就是ttt,你会说,我这是从txt手动改过来的。

    你还记得有一年的一个编程大赛,有个大牛用 汇编写了个3d游戏,将文件后缀改成 jpg就是一个 小鸭子的图片,但是 改成txt后用cmd命令执行,就是一个游戏动画。这时,你觉得这个文件的类型是图片呢还是txt呢?后缀名本来就是彼此的一个约定,当OS 检测到相应的后缀,就调对应的程序来处理它,处理不了,是user的问题。而不是这个application有问题。


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年11月26日 14:05
    版主
  • 谢谢你的回答,但如果要是判断一个.txt文件,然后把扩展名改成.ttt这个方法就不准确了!!!!有没有什么好的方法获取文件的真正扩展名!!!

    前面两位已经说清楚了,我画蛇添足一下。

    没有你所谓的真正扩展名,扩展名只有这一个。觉得你应该判断文件是文本文件还是二进制文件,而不是通过文件的扩展名。

    2012年11月27日 5:44