码迷,mamicode.com
首页 > 其他好文 > 详细

文件读写

时间:2020-03-12 12:50:35      阅读:46      评论:0      收藏:0      [点我收藏+]

标签:字节   共享   天天向上   dir   文件名   表示   xxx   sys   管道   

一、概述

1、什么是流

流相当于一个管道,C#程序通过流来读写文件。流分为:

  • 输入流 : 相当于程序而言,数据从文件写入到程序这个过程
  • 输出流 : 相当于程序而言,数据从程序输出到文件中的过程

2、FileStream对象

FileStream对象表示在磁盘或网络路径上指向文件的流(即用于指向要操作的文件);

在FileStream的基础上,使用StreamReader或StreamWriter实现文件的读写(字节方式)。

FileStream 对象 = new FileStream(String path,
                               FileModel model
                               [,FileAccess access,FileShare share]) ;

参数说明:

  • path :指向要操作的文件(路径+文件名)
  • FileMode:打开文件的方式
    • CreateNew:创建新文件,如果文件存在会抛异常。
    • Create:创建新文件,如果文件存在会覆盖。
    • Open:打开现有文件,流指向文件开头。如果文件不存在则抛出异常。
    • OPenOrCreate:打开文件,流指向文件开头。如果文件不存在则创建新文件。
    • Truncate:打开现有文件并清除文件内容,流指向文件开头。如果文件不存在则抛出异常。
    • Append:打开文件,流指向末尾,只能与枚举FileAccess.Write联合使用(追加内容)。
  • FileAccess:访问文件的方式
    • Read:打开文件,用于只读
    • Write:打开文件,用于只写
    • ReadWrite:打开文件,用于读写
  • FileShare:文件共享方式
    • None:不共享当前文件
    • Read:允许随后打开文件读取
    • Write:允许随后打开文件写入
    • ReadWrite:允许随后打开文件读取或写入
    • Delete:允许随后删除文件

语法:

FileModel.Xxx

FileAccess.Xxx

FileShare.Xxx

3、实现文件的读/写

以字节数组的方式进行读写

1)读取文件中的数据

FileStream fs = new FileStream(@"d:\abc.txt",FileMode.Open);
byte[] b = new byte[1024];

while (fs.Read(b, 0, b.Length) > 0)
{
    string myStr = System.Text.Encoding.UTF8.GetString(b);
    richTextBox1.Text = myStr ;
}
fs.Close();

2)写数据到文件中

//创建FileStream对象,指定要操作的文件
FileStream fs = new FileStream(@"d:\abc.txt", FileMode.Append);
//把数据转换为字节数组
byte[] data = System.Text.Encoding.UTF8.GetBytes("好好学习,天天向上!!");
//写数据
fs.Write(data, 0, data.Length);
//关闭流
fs.Close();

二、文件的读取:StreamReader

1、语法

// 创建对象 - 依赖构造方法
StreamReader 对象 = new StreamReader(Stream stream[,Encoding.字符编码]) ;
StreamReader 对象 = new StreamReader(filename[,Encoding.字符编码]) ;

参数说明:

  • Stream : 要读取的文件流(FileStrem是其中的Stream)
  • filename : 路径+文件名
  • Encoding : 字符编码

2、方法

  • ReadLine() : 一行一行地读取文件,读到文件的末尾时,返回null
  • ReadToEnd() : 从文件的开始到末尾,一次性读取
  • Close() : 关闭流

三、文件的写入:StreamWriter

1、语法

StreamWriter 对象 = new StreamWriter(Stream stream) ;
StreamWriter 对象 = new StreamWriter(string filename,bool append,Encoding encoding) ;
StreamWriter 对象 = new StreamWriter(string filename,bool append,Encoding encoding) ;

参数说明:

  • stream : 要写入文件的流
  • append : 是否追加
  • encoding : 字符编码
  • filename : 路径+文件名

2、方法

  • Write() : 写入数据
  • WriteLine() : 写入数据并换行
  • flush() : 清空缓冲区
  • Close() : 关闭流

四、快速文件操作

1、文件写入

1)File.AppendAllText(string path,string content,Encoding encoding)

  • path : 路径+文件
  • content : 向文件添加的内容
  • encoding : 编码

添加内容到文件,如果文件存在,追加内容到文件,最后关闭文件;
如果文件不存在,则创建文件并添加内容到文件,最后关闭文件

File.AppendAllText("e:\\bb.txt","你好",Encoding.Default);

2)File.WriteAllBytes(string path,byte[] bytes)

File.WriteAllBytes("e:\bb.txt", Encoding.Default.GetBytes("你好"));

3)File.WriteAllLines(string path,string[] content,Encoding encoding) ;

string[] str = { "我", "好" };
File.WriteAllLines("e:\bb.txt", str, Encoding.Default);

4)File.WriteAllText(string path,string content,Encoding encoding) ;

File.WriteAllText("e:\bb.txt", "好好学习", Encoding.Default);

2、文件读取

1)File.ReadAllText(string path[,Encoding encoding]) ;

String str = File.ReadAllText("e:\bb.txt",Encoding.Default);

2)File.ReadAllBytes(string path) ;

byte[] str = File.ReadAllBytes("e:\bb.txt");
MessageBox.Show(System.Text.Encoding.Default.GetString(str));

3)File.ReadAllLines(string path[,Encoding encoding]) ;

string[] str = File.ReadAllLines("e:\bb.txt", Encoding.Default);
MessageBox.Show(string.Join(",",str));

3、文件操作

  • File.Encrypt(string path) : 加密文件
  • File.Decrypt(string path) : 解密文件
  • Directory.Exists(string path):判断目录是否存在
  • File.Exists(string path) : 判断文件是否存在
  • File.Delete(string path) : 删除文件
  • File.Copy(string sourceFile,String DestFile) : 复制文件

文件读写

标签:字节   共享   天天向上   dir   文件名   表示   xxx   sys   管道   

原文地址:https://www.cnblogs.com/zing163/p/12468396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!