C#学习笔记:文件操作

C#学习笔记:文件操作


如何读写文件:
通常来讲,用C#程序读写一个文件需要以下五个基本步骤
(1)创建文件流。
(2)创建阅读器或者写入器
(3)执行读写操作
(4)关闭阅读器或者写入器
(5)关闭文件流


需要命名空间:using System.IO;


读取器:
  //创建文件流
  FileStream myfs = new FileStream("路径", FileMode.Open);
  //创建读取器,传入的是文件流
  StreamReader mysw = new StreamReader(myfs);
  //读取全部内容,返回值为String
  mysw.ReadToEnd();
  //关闭读取器
  mysw.Close();
  //关闭文件流
  myfs.Close();




写入器:
  //创建文件流
  FileStream myfs = new FileStream("路径", FileMode.Create);
  //创建读取器,传入的是文件流
  StreamReader mysw = new StreamReader(myfs);
  //将录入的内容写入文件,将会保存到myfs里面的路径下的文件里面
  mysw.Write("文本值");
  //关闭写入器
  mysw.Close();
  //关闭文件流
  myfs.Close();


关闭顺序一定要注意,先是关闭读写器然后才关闭文件流。顺序不能错!


-----------------------------------文件流-----------------------------------


读写文件的第一步是创建一个文件流。流是一个用于数据传输的对象。这里使用的文件流是FileStream类,它主要用于读写文件中的数据,在创建一个文件流时,需要在它的构造函数中指定参数


语法:
FileStream 文件对象 = new FileStream(string FilePath,FileMode);


其中FilePath用于指定要操作的文件,而FileMode指定打开文件的模式,它是一个枚举类型。该枚举的不同成员如下
Create:用于定的名称新建一个文件。如果文件存在,则改写旧文件。


CreateNew:新建一个文件。如果文件存在就会发生异常,提示文件已经存在。


Open:打开一个文件,使用这个枚举值时,指定的文件必须存在,否则会发生异常



OpenOrCreate:OpenOrCreate与Open成员类似,只是如果文件不存在,则用指定的名称新建一个文件并打开它。


Append:打开现有文件,并在文件尾追加内容。


FileMode枚举还有其他成员,在这里我们就不再做列举


路径非法问题:
C#程序内部不支持"C:\Text.txt"。


解决方案:
(1)将路径改为"C:\\Text.txt"。这是C#支持的标准写法
(2)@"C:\Text.txt",使用转义符@


---------------------------------文件读写器---------------------------------
StreamWriter写入器
写入器的主要方法如下:
 StreamWriter.Write();用于写入流,这个流就是我们创建好的流
 StreamWriter.WriteLine();用于写入一行数据,写入某些数据后跟换行符
 StreamWriter.Close();用于关闭写入器


StreamReader读取器
读取器的主要方法如下:
 StreamReader.ReadToEnd();从当前位置读到末尾,返回字符串
 StreamReader.ReadLine();用于读取文件流中的一行数据,返回字符串
 StreamReader.Close();用于关闭读取器
--------------------------------- 乱码问题 ---------------------------------
Encoding类指定字符编码。Encoding类位于System.Text命名空间,用来表示字符编码。
可以用Encoding类的静态成员指定编码格式。比如:
    Encoding.UTF8:获取UTF-8格式的编码
    Encoding.Default:获取操作系统的当前编码
也可以通过Encoding类的静态方法GetEncoding(String name)指定字符编码,参数name必须C#支持的编码名。例如:
    StreamReader mysw = new StreamReader(myfs,Encoding.GetEncoding("BIG5"));


以下是各种常见的编码:
    (1)ASCII:美国信息交换标准码。适用于纯英文环境,但不适合英语之外的环境
    (2)ANSI:向下兼容ASCII,并且保留空余位置处理一些特殊字符。
    (3)GB2313:中国国家标准的汉字编码,它收录的汉字基本满足汉字的计算机处理需求。但不支持繁体中文编码,后来又增加了GBK字符集、BIG5字符集。
    (4)Unicode:国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。由于Unicode编码所占用的空间较大,所以出现了一些中间格式的字符集,它们被称为通用转换格式,即UTF(Universal Transformation Format)。目前存在的UTF格式有UTF-7、UTF-8、UTF-16、UTF-32。UTF-8是Unicode的一种变长字符编码,现在已被标准化为RFC 3629。UTF-8便于不同的计算机之间使用网络传输不同语言和编码的文字,使得双字节的Unicode能够在现存的处理单字节的系统上正确传输。C#语言内容默认支持UTF-8编码。
------------------------------ 文件和目录操作 ------------------------------
File类:用来移动文件,复制文件,删除文件
     File类的常用方法
方法 说明
Exists(string path) 用于检查指定文件是否存在,返回bool值
Copy(string path,string path)   将指定路径的源文件中的内容复制到目标文件中, 如果目标文件不存在,则在指定路径新建一个文件
Move(string path,string path) 将指定文件移到一个新的路径
Delete(string path) 删除指定文件,如果指定文件不存在,不引发异常


Directory类:Directory类是用来对文件夹进行操作的
    Directory类的常用方法
方法 说明
Exists(string path) 用于检查指定文件夹在磁盘上是否存在
Move(string path,string path) 用于将文件或目录及内容移到新位置
Delete(string path) 删除指定目录,如果bool值为true,则删除子目录 中的所有目录内容


File类和Directory类都属于静态类,不需要实例化


FileInfo类:FileInfo类和File类的功能相似,但是需要实例化。
FileInfo fi = new FileInfo(path);//实例化的时候需要将文件路径传入进去
     FileInfo类的常用方法
属性 说明
Exists 用于检查指定文件是否存在,返回bool值
Extension 获取表示文件扩展名部分的字符串
Name 获取文件名
FullName 获取目录或文件的完成目录
方法 说明
CopyTo(string path)   将现有文件复制到新文件,不允许覆盖现有文件Delete() 永久删除文件
MoveTo(string path) 将指定文件移到一个新的路径




DirectoryInfo类:DirectoryInfo类与Directory类类似,需要实例化
DirectoryInfo di = new DirectoryInfo (path);//实例化的时候 需要将文件夹路径传入进去
        //返回当前目录的子目录
        DirectoryInfo[] subDir = di.GetDirectories();
//返回当前目录的文件列表
  FileInfo[] fi = di.GetFile();
(1)GetDirectories():DirectoryInfo调用返回对象数组,Directory调用返回子目录名称数组
(2)GetFile():DirectoryInfo调用返回对象数组,Directory调用返回子目录名称数组


如何取舍FileInfo类和File类和DirectoryInfo类与Directory类?
答:File类和Directory类都是静态类,每次调用方法在使用时都会进行安全检查,所以如果要多次对某个文件或者文件夹进行操作的话,可以优先考虑FileInfo类和DirectoryInfo类


----------------------------------- 总结 -----------------------------------
(1)读写文件的五个步骤:创建文件流、创建读写器、读写文件、关闭读写器、关闭文件流。
(2)文件流的类是FileStream,创建一个文件流时,需要指定操作文本的路径、文件的打开方式和文件的访问方式。
(3)StreamWriter是一个写入器,StramReader是一个读取器。读写文本文件可以直接使用读写器,不用创建文件流,但是不容易控制文本的打开方式和访问方式
(4)File类用于对文件进行操作,如复制、移动、删除等,Directory类用于对文件夹操作,它们都是静态类。
(5)静态类只包含静态成员,非静态类可以包含静态成员;静态类不能包含实例成员,非静态类可以包含实例成员;静态类使用类名访问其成员,非静态类使用它的实例对象访问成员。
(6)FileInfo类与File类功能类似,也可以完成对文件的基本操作。不同的是File类不可以实例化对象。如果打算多次重用某个文件对象,可以优先考虑使用FileInfo类,因为并不总是需要安全检查
(7)DirectoryInfo类与Directory类功能类似,可以完成对文件夹的基本操作。如果打算多次重用某个目录对象,可以考虑使用DirectoryInfo类的实例方法。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis是一个开源的持久化框架,可以帮助我们将数据从数据库中读取出来,然后转换为Java对象,并将Java对象写入数据库中。 在C#中使用MyBatis,需要先安装MyBatis.Net库,然后在项目中引用该库。接着,我们需要创建一个配置文件,用于配置MyBatis的数据库连接信息、SQL语句等。在配置文件中,我们需要指定一个别名,用于在程序中引用这个配置文件。 接下来,我们需要创建一个映射文件,用于将数据库中的数据映射为Java对象。在映射文件中,我们需要定义一个 resultMap,用于定义Java对象与数据库表之间的关系。我们还需要定义一个 SQL 语句,用于从数据库中读取数据,并将其转换为Java对象。 在程序中,我们需要创建一个 SqlSession 对象,用于执行SQL语句。我们可以通过SqlSession对象调用selectOne、selectList、update、delete等方法,来执行SQL语句,并将结果转换为Java对象或者操作数据库。 下面是一个简单的示例,展示了如何在C#中使用MyBatis: 1. 安装MyBatis.Net库 在Visual Studio中,选择“工具”-“NuGet包管理器”-“程序包管理器控制台”,然后输入以下命令: ``` Install-Package MyBatisNet ``` 2. 创建配置文件 在项目中创建一个名为“SqlMapConfig.xml”的文件,用于配置数据库连接信息、SQL语句等。以下是一个示例配置文件: ``` xml <?xml version="1.0" encoding="utf-8" ?> <sqlMapConfig> <database> <provider name="SqlServer" connectionString="Data Source=localhost;Initial Catalog=mydatabase;User ID=myuser;Password=mypassword;" /> </database> <sqlMap> <map resource="MyMapper.xml"/> </sqlMap> </sqlMapConfig> ``` 其中,provider元素用于指定数据库类型和连接字符串,map元素用于指定映射文件路径。 3. 创建映射文件 在项目中创建一个名为“MyMapper.xml”的文件,用于将数据库中的数据映射为Java对象。以下是一个示例映射文件: ``` xml <?xml version="1.0" encoding="utf-8" ?> <sqlMap namespace="MyMapper"> <resultMap id="MyResultMap" class="MyClass"> <result property="id" column="id"/> <result property="name" column="name"/> </resultMap> <select id="selectById" resultMap="MyResultMap"> SELECT * FROM mytable WHERE id=#id# </select> </sqlMap> ``` 其中,resultMap元素用于定义Java对象与数据库表之间的关系,select元素用于定义SQL语句。 4. 在程序中使用MyBatis 在程序中,我们需要创建一个 SqlSession 对象,用于执行SQL语句。以下是一个示例代码: ``` csharp using IBatisNet.DataMapper; using IBatisNet.DataMapper.Configuration; using IBatisNet.DataMapper.Configuration.Files; // 创建配置文件 DomSqlMapBuilder builder = new DomSqlMapBuilder(); ISqlMapper sqlMapper = builder.Configure(@"SqlMapConfig.xml"); // 执行SQL语句 MyClass obj = sqlMapper.QueryForObject<MyClass>("MyMapper.selectById", new { id = 1 }); ``` 以上是一个简单的示例,展示了如何在C#中使用MyBatis。实际上,MyBatis还有很多其他的用法和功能,需要我们在实际开发中去探索和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值