积极答复者
c#获取文件的真实扩展名

问题
-
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扩展名的文件出来的编码是一样的
有没有别的方法能获取真实文件扩展名的,或者这个方法什么地方不对,谢谢了!!
答案
-
尝试使用System.IO.Path:
Path.GetExtension("里边是从OpenFileDialog中获取的绝对路径或者相对路径+文件名");
- 已标记为答案 Mike FengModerator 2012年12月4日 10:13
-
你好,
》但如果要是判断一个.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.
- 已标记为答案 Mike FengModerator 2012年12月4日 10:13
-
谢谢你的回答,但如果要是判断一个.txt文件,然后把扩展名改成.ttt这个方法就不准确了!!!!有没有什么好的方法获取文件的真正扩展名!!!
前面两位已经说清楚了,我画蛇添足一下。
没有你所谓的真正扩展名,扩展名只有这一个。觉得你应该判断文件是文本文件还是二进制文件,而不是通过文件的扩展名。
- 已标记为答案 Mike FengModerator 2012年12月4日 10:13
全部回复
-
尝试使用System.IO.Path:
Path.GetExtension("里边是从OpenFileDialog中获取的绝对路径或者相对路径+文件名");
- 已标记为答案 Mike FengModerator 2012年12月4日 10:13
-
你好,
》但如果要是判断一个.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.
- 已标记为答案 Mike FengModerator 2012年12月4日 10:13
-
谢谢你的回答,但如果要是判断一个.txt文件,然后把扩展名改成.ttt这个方法就不准确了!!!!有没有什么好的方法获取文件的真正扩展名!!!
前面两位已经说清楚了,我画蛇添足一下。
没有你所谓的真正扩展名,扩展名只有这一个。觉得你应该判断文件是文本文件还是二进制文件,而不是通过文件的扩展名。
- 已标记为答案 Mike FengModerator 2012年12月4日 10:13