1.  读取文件的方法:

  1.  声明一个文件流: 目的是为了内存与文件之间的桥梁,可以进行数据的往来。

  FileStream fs = new FileStream(filename,FileMode.Open,FileAccess.Read,FileShare.None);

  4个参数的意义   文件名 、 打开文件的方式 、 对文件进行什么样的操作 、 是否允许其他进程共享(值为FileShare.None的时候,谢绝共享) 。注意,第2个参数要与第3个参数配对, 例如 Open 对应 Read , Create 对于 Write

  2.  创建读取器: 用于操作文件流,来达到读取文件的目的。

  StreamReader sr = new StreamReader(fs,Encoding.Default);

   3.  读取文件操作: 用于EndOfStream 指示是否读到流的末尾

    ReadToEnd()  一次读取文件中所有的内容

    ReadLine()     分行读取

                //str = sr.ReadToEnd(); 一次读取到底
//一行一行读取
while(sr.EndOfStream == false)
{
string line = sr.ReadLine();
str += (line + "\r\n");
}

   4.  关闭读取器:

    sr.Close();

   5.  释放所操作的文件流对象

    fs.Close();

2.  写入文件的方法:

  1.  声明一个文件流:目的是为了内存与文件之间的桥梁,可以进行数据的往来。做法与读取文件时相似。

  FileStream fs = new FileStream(myFilePath, FileMode.Create);

   2.  创建写入器:用于操作文件流,来达到写入文件的目的。

  StreamWriter sw = new StreamWriter(fs,Encoding.Default);

   3.  写入文件操作: 一般采用 Write() 方法

  sw.Write(str);

     4.  关闭写入器:

  sw.Close();

     5.  释放所操作的文件流对象

  fs.Close();

3.  为什么要关闭读写器、文件流

  为什么要关闭文件流后,文件才会全部写入?如果写人文件后,不关闭写入器,文件中会出现没有数据或者数据不全的情况。

    1.写入器先将数据写入到文件流所指向的内存中(也就是一个缓冲区),只有当这块内存被写满的时候,才会把内存中的数据写入到磁盘上,也就是将数据写入到文件里面。

    2.当我们关闭文件读写器的时候,缓冲区中剩下的数据就会被写入到文件中。如果之前读取到的数据没有把缓冲区写满,则文件中没有数据;反之文件中的数据不全。

    3.对文件进行操作后,一定要关闭读写器、文件流,因为这些读写器、文件流占用了系统资源。

4.  注意

  1.  当我们打开一个文件,如果出现英文正常,汉字为乱码,首先要考虑的是编码问题。

       读取文件时采用的编码和写入文件的时候采用的编码要一致。

   2.  当我们在声明文件流、读写器的时候,可以先写好关闭文件流、读写器的操作。因为有可能,对文件的操作比较复杂,当我们完成操作后,会忘记关闭文件流、读写器。

   3.  获取当前应用程序所在的文件路径:  Application.StartupPath

5.  几种与文件有关的对话框 

1.  提示用户打开文件的对话框  OpenFileDialog  

   常用属性:

     Multiselect  bool类型,是否可以在对话框中选中多个文件。

     InitialDirectory  对话框打开时显示的初始目录。

     SafeFileName  对话框中所选文件的文件名和扩展名。 文件名不包含路径。

       Filter  获取或设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。   例如, “可执行程序|*.exe|word文档|*.doc” ;

     FileName  获取或设置一个包含在文件对话框中选定的文件名的字符串。

2.  提示用户保存文件的对话框  SaveFileDialog

   常用属性:  与OpenFileDialog相同

3.  提示用户选择文件夹的对话框  FolderBrowserDialog

     常用属性:  

      Description  获取或设置对话框中在树视图控件上显示的说明文本。

       SelectedPath  获取或设置用户选定的路径。

C#中的文件操作2的更多相关文章

  1. 第32课 Qt中的文件操作

    1. Qt的中IO操作 (1)Qt中IO操作的处理方式 ①Qt通过统一的接口简化了文件和外部设备的操作方式 ②Qt中的文件被看作一种特殊的外部设备 ③Qt中的文件操作与外部设备的操作相同 (2)IO操 ...

  2. 重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作

    原文:重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作 [源码下载 ...

  3. 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Application Data 中的媒体

    [源码下载] 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Ap ...

  4. 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理

    [源码下载] 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理 作者:webabcd 介绍背水一战 Windows 10 ...

  5. Java中的文件操作(一)RandomAccessFile

    今天,学到的是java中的文件操作. Java.IO.File Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是Rand ...

  6. Win 32平台SDK中的文件操作

    读取文件: HANDLE hFile ; // 声明文件操作内核对象句柄 hFile = CreateFile(, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ...

  7. ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

    做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path ...

  8. 关于Python中的文件操作(转)

    总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...

  9. 说说Python 中的文件操作 和 目录操作

    我们知道,文件名.目录名和链接名都是用一个字符串作为其标识符的,但是给我们一个标识符,我们该如何确定它所指的到底是常规文件文件名.目录名还是链接名呢?这时,我们可以使用os.path模块提供的isfi ...

  10. C#中的文件操作

    在.NET Framework 中进行的所有输入和输出工作都要用到流(stream) 有两种类型的流: 输出流:当向某些外部目标写入数据时,就要用到输出流(将数据写入到文件中). 输入流:用于将数据读 ...

随机推荐

  1. VS2015集成新潮工具4

    VS2015集成新潮工具(四)   本课程来源与微软connect视频教程,Modern Web Tooling in Visual Studio 2015 本课程主要讲下当下流行的前端工具 bowe ...

  2. Andorid类似Fragment更换布置方法

    public void replaceRightView(View v) { int f = LinearLayout.LayoutParams.MATCH_PARENT; LinearLayout. ...

  3. Android项目---ActivityGroup的使用

    ActivityGroup在一年前已经被说明不用了,但是腾讯QQ,新浪微博上也不乏ActivityGroup的身影.所以,即使是过时的东西,也有学习的必要,当然项目中也是可以添加的.在网上找了一个博客 ...

  4. 使用UpdatePanel控件

    使用UpdatePanel控件(二) UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编 ...

  5. django源码阅读

    最近再看django-bootstrap-toolkit,一直困惑于静态文件的路径问题.所以只能从源码入手了.   从manage.py开始.manage.py 比较简单就几句话. #!/usr/bi ...

  6. 重载 C 函数

    在 clang 的扩展下,可以重载 C 函数,例如重载 sin 函数: float __attribute__((overloadable)) sin(float x) { return sinf(x ...

  7. python study

    python django restul webservice返回json数据 2013-09-27 23:14 by lixingle, 249 visits, 网摘, 收藏, 编辑 摘要:做这个d ...

  8. 对 Linux 新手有用的 20 个命令

    你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟!!!我说什么呢,是什么原因你就出现在我的世界里了.从我以往的经验来说,当我刚使用Linux,命令,终端啊什么的,吓了我一跳 ...

  9. 公众平台Bee.WeiXin

    微信公众平台Bee.WeiXin开发介绍 阅读目录 开始 预览 配置项说明 调用链方式的应答 理解调用链上下文 自定义MVC响应 总结 我们来看一下如何通过Bee.WeiXin开发微信公众平台.关于微 ...

  10. jQuery判断浏览器类型

    if ($.browser.msie) { alert("IE浏览器"); } else if ($.browser.opera) { alert("opera浏览器&q ...