问题描述
最近在学习FileStream的用法,但是怎么样都无法取得长度,测试代码如下staticvoidMain(string[]args){Strings=@"notepad.exe";FileStreamf=newFileStream(s,FileMode.Open);Console.WriteLine("Length:",f.Length);f.Close();}要打开的文件一定在,因为试过改名字就会报错。求教各位高手。
解决方案
解决方案二:
privatestaticvoidFileStreamTest(){using(FileStreamfs=newFileStream("D:/config.xml",FileMode.Open)){Console.WriteLine(fs.Length);}}
有文件的话没问题啊,取到的也是正确长度啊指定路径没文件的话当然异常了啊,FileMode指定了好几种读取的模式//摘要://指定操作系统打开文件的方式。[Serializable][ComVisible(true)]publicenumFileMode{//摘要://指定操作系统应创建新文件。这需要System.Security.Permissions.FileIOPermissionAccess.Write//权限。如果文件已存在,则将引发System.IO.IOException异常。CreateNew=1,////摘要://指定操作系统应创建新文件。如果文件已存在,它将被覆盖。这需要System.Security.Permissions.FileIOPermissionAccess.Write//权限。FileMode.Create等效于这样的请求:如果文件不存在,则使用System.IO.FileMode.CreateNew;否则使用//System.IO.FileMode.Truncate。如果该文件已存在但为隐藏文件,则将引发System.UnauthorizedAccessException异常。Create=2,////摘要://指定操作系统应打开现有文件。打开文件的能力取决于System.IO.FileAccess枚举所指定的值。如果文件不存在,引发一个System.IO.FileNotFoundException//异常。Open=3,////摘要://指定操作系统应打开文件(如果文件存在);否则,应创建新文件。如果用FileAccess.Read打开文件,则需要System.Security.Permissions.FileIOPermissionAccess.Read权限。//如果文件访问为FileAccess.Write,则需要System.Security.Permissions.FileIOPermissionAccess.Write权限。//如果用FileAccess.ReadWrite打开文件,则同时需要System.Security.Permissions.FileIOPermissionAccess.Read//和System.Security.Permissions.FileIOPermissionAccess.Write权限。OpenOrCreate=4,////摘要://指定操作系统应打开现有文件。该文件被打开时,将被截断为零字节大小。这需要System.Security.Permissions.FileIOPermissionAccess.Write//权限。尝试从使用FileMode.Truncate打开的文件中进行读取将导致System.ArgumentException异常。Truncate=5,////摘要://若存在文件,则打开该文件并查找到文件尾,或者创建一个新文件。这需要System.Security.Permissions.FileIOPermissionAccess.Append//权限。FileMode.Append只能与FileAccess.Write一起使用。试图查找文件尾之前的位置时会引发System.IO.IOException//异常,并且任何试图读取的操作都会失败并引发System.NotSupportedException异常。Append=6,}
解决方案三:
试了很多次,长度还是出不来
解决方案四:
用FileStream来读exe好像是不行的,读txt其他的文件格式就行,你试下用StreamReader读下
解决方案五:
还有读的时候注意编码格式
解决方案六:
引用2楼universe_2015的回复:
试了很多次,长度还是出不来
Console.WriteLine("Length:{0}",f.Length);
解决方案七:
用StreamReader应该可以,试一下
解决方案八:
Console.WriteLine("Length:",f.Length);你输出的就是length:你还有个括号没写看5L
解决方案九:
Strings=@"notepad.exe";这是文本文件的路径么??FileStream是打开文本文件的,你要确定是否可以打开exe文件,才能取长度
解决方案十:
不能读取exe.文件。只可以读取文本类的文件。