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. 《C语言及程序设计初步》网络课程主页

    题记 CSDN要开在线教育频道,向我发出邀请,看能否开些课程. 我近日一直在关注着翻转课堂,试图在传统课堂中引入新的元素,这须要资源建设的积累.没有时间表的工作,非常难把握. 为CSDN做在线课程,为 ...

  2. Python开发工具Wing IDE发布5.0.1版本

    Wing IDE是一个跨平台的Python IDE,提供了一个专业代码编辑.自动编辑.自动完成.重构.强大的图形调试器.版本控制.单位测试.搜索及其他功能.目前已经成为最全面.最综合.最先进的智能化P ...

  3. wpa_cli P2P 连接相关的调试命令

    在最近的一次客户端上的调试p2p的wifi display, 他们中的一半Android该调整了,整个前所以没有太多的研究p2p过程连接, 客户现在使用的非Android平台架构. 需要协助客户这么多 ...

  4. iOS UIWebView键盘操控

    +-------------------------+ 假设你有以下的问题,也许这篇文章将帮助你. 键盘遮盖了UIWebView. 怎样拖动UIWebView来移除键盘. 键盘出现时UIWebView ...

  5. 处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面.如果该页面是脚本,请添加处理程序.如果应下载文件,请添加 MIME 映射. 解决办法:以管理员运行命令:C: ...

  6. JMM介绍

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVvemhhbmZlbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  7. sql简单实用的统计汇总案例参考

    USE [PM]GO/****** 对象:  StoredProcedure [dbo].[LfangSatstics]    脚本日期: 08/24/2013 10:57:48 ******/SET ...

  8. Node填坑教程——整理文件

    如果你能把所有代码写进一个文件,并且能很好的管理.协调.多人开发.那么可以跳过这期(请务必带我飞). 我们接着完善上期的代码,给代码分家. node并没有启动入口,更没有固定的项目结构,文件配置.这些 ...

  9. Map和List

    Map和List 当把Map中的key-value对当成单独的集合元素来对待时,Map和Set就统一起来了. Map集合是一个关联数组,它包含两组值:一组是所有key组成的集合,因为Map集合的key ...

  10. SZU : A18 (Climb Well)

    Judge Info Memory Limit: 32768KB Case Time Limit: 10000MS Time Limit: 10000MS Judger: Number Only Ju ...