FileStream无法取得长度

问题描述

最近在学习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.文件。只可以读取文本类的文件。

时间: 2024-09-18 00:25:04

FileStream无法取得长度的相关文章

把握VB.NET中的流FileStream

stream 当你第一次用VB.NET读写文件的时候,你肯定会发现VB.NET摒弃了传统的文件I/O支持,感觉不习惯.其实,在.NET里面,微软用丰富的"流"对象取代了传统的文件操作,而"流",是一个在Unix里面经常使用的对象. 我们可以把流当作一个通道,程序的的数据可以沿着这个通道"流"到各种数据存储机构(比如:文件,字符串,数组,或者其他形式的流等).为什么我们会摒弃用了那么久的IO操作,而代之为流呢?其中很重要的一个原因就是并不是所有的数

利用C#的FileStream分段复制大文件

即每次复制文件的一小段,以节省总内存开销.当然,本机复制也可以采用.NET内部的System.IO.File.Copy方法. Code [copy to clipboard] CODE: /// <summary> /// 复制文件 /// </summary> /// <param name="fromFile">要复制的文件</param> /// <param name="toFile">要保存的位置

FileStream常用的属性和方法

对流进行操作时要引用 using System.IO; 命名空间 FileStream常用的属性和方法: 属性: CanRead 判断当前流是否支持读取,返回bool值,True表示可以读取 CanWrite 判断当前流是否支持写入,返回bool值,True表示可以写入 方法: Read() 从流中读取数据,返回字节数组 Write() 将字节块(字节数组)写入该流 Seek() 设置文件读取或写入的起始位置 Flush() 清除该流缓冲区,使得所有缓冲的数据都被写入到文件中 Close() 关

FileStream大文件复制

 FileStream缓冲读取和写入可以提高性能.FileStream读取文件的时候,是先讲流放入内存,经Flash()方法后将内存中(缓冲中)的数据写入文件.如果文件非常大,势必消耗性能.特封装在FileHelper中以备不时之需.参考文章:http://www.cnblogs.com/yangxiaohu1/archive/2008/06/20/1226949.html将该文章中提供的代码少做修改,原文中进行了强制类型转换,如果文件很大,比如4G,就会出现溢出的情况,复制的结果字节丢失严重,

asp.net FileStream的读取和写入代码

asp教程.net filestream的读取和写入代码 using system; using system.collections.generic; using system.componentmodel; using system.data; using system.drawing; using system.linq; using system.text; using system.windows.forms; using system.io;//注意,必不可少 namespace w

C语言指针的长度和类型

如果考虑应用程序的兼容性和可移植性,指针的长度就是一个问题,在大部分现代平台上,数据指针的长度通常是一样的,与指针类型无关,尽管C标准没有规定所有类型指针的长度相同,但是通常实际情况就是这样.但是函数指针长度可能与数据指针的长度不同. 指针的长度取决于使用的机器和编译器,例如:在现代windows上,指针是32位或是64位长 测试代码: #include<stdio.h> #include<math.h> #include<stdlib.h> #include<s

安全的截取指定长度的html或者ubb字符串

在将html代码输出到页面时,有时候会需要截断字符串保留指定长度的字符串,由于html中有些标签 必须成对出现,所以在截取html时需要特别注意,不能因为截断问题把页面搞乱掉. 在截取字符串时需要记录每一个标签是否关闭,如果截取到指定长度还有没有关闭的标签,那么我们 需要将标签关闭,或者删除掉未关闭的标签.不考虑某些不需要关闭标签的情况,html开始和结束标签总 是成对出现的,我们可以遍历输入的字符串,并在标签开始时放入堆栈中,遇到结束标签时从堆栈中弹出 一个元素,这样遍历到指定长度,堆栈中留下

[华为机试练习题]19.字符串最后一个单词的长度

题目 代码 /*--------------------------------------- * 日期:2015-06-30 * 作者:SJF0115 * 题目:字符串最后一个单词的长度 * 来源:华为上机 -----------------------------------------*/ #include <iostream> #include <string> #include <algorithm> #include <vector> using

url-HttpURLConnection.getInputStream获取长度为-1

问题描述 HttpURLConnection.getInputStream获取长度为-1 百度得知Android2.2以上使用getInputStream,需要加上 hc.setRequestProperty(""Accept-Encoding""identity""); 可是试了下还是不行... URL url = new URL(s); HttpURLConnection hc = (HttpURLConnection)url.openCon