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. 推荐两个针对github的chrome插件

    作为一只程序猿,在github上找代码.看代码是再正常不过的事情了.这时候有个工具可以方便你翻看代码,想必是极好的. Sourcegraph for GitHub 这个插件允许你像使用IDE那样浏览代 ...

  2. windows安装MySQL

    1)双击MySQL安装文件mysql-essential-5.0.82-win32.msi.进入欢迎页面. 单击Nextbutton.进入到安装类型页面. 2)在安装类型页面中的第一项是典型安装,第二 ...

  3. MySQL之 ALTER vs CHANGE vs MODIFY COLUMN

    1.ALTER COLUMN 用于设置或者移除某一列的默认(缺省)值, 1.1用法 ALTER TABLE MyTable ALTER COLUMN foo SET DEFAULT 'bar'; AL ...

  4. 喜大本\\ u0026普,微软的开源

    词汇表--喜大本\\ u0026普:爱过.有趣的游戏,庆祝.奔走相告.简而言之<reload=1">微软宣布.NET开发环境开源>是个好消息. 前言及历史回想 就我个人来说 ...

  5. c#、sql、asp.net、js、ajax、jquery大学知识点笔记

    <table cellSpacing="0" cellPadding="0" width="609" height="470 ...

  6. MSDN官方XmlSerializer类导致内存泄漏和性能低

    MSDN官方XmlSerializer类使用说明链接: http://msdn.microsoft.com/zh-CN/library/system.xml.serialization.xmlseri ...

  7. ubuntu-使用终端配置网络

    文件说明: IP.网关.掩码的配置文件:/etc/network/interfaces DNS配置文件:/etc/resolv.conf 配置步骤: 1)配置有关IP文件 配置IP.网关.掩码这些信息 ...

  8. 设计模式20---设计模式之备忘录模式(Memento)(行为型)

    1.讲解备忘录模式 备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式,是GoF的23种设计模式之一,属于行为模式. 1.1定义 在不破坏封 ...

  9. Definition of:payload

    (1) Refers to the "actual data" in a packet or file minus all headers attached for transpo ...

  10. Vijos1055 奶牛浴场(极大化思想求最大子矩形)

    思路详见 王知昆<浅谈用极大化思想解决最大子矩形问题> 写得很详细(感谢~....) 因为不太会用递推,所以用了第一种方法,时间复杂度是O(n^2),n为枚举的点数,对付这题绰绰有余 思路 ...