文件读写
Posted zing163
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件读写相关的知识,希望对你有一定的参考价值。
一、概述
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:b.txt", Encoding.Default.GetBytes("你好"));
3)File.WriteAllLines(string path,string[] content,Encoding encoding) ;
string[] str = { "我", "好" };
File.WriteAllLines("e:b.txt", str, Encoding.Default);
4)File.WriteAllText(string path,string content,Encoding encoding) ;
File.WriteAllText("e:b.txt", "好好学习", Encoding.Default);
2、文件读取
1)File.ReadAllText(string path[,Encoding encoding]) ;
String str = File.ReadAllText("e:b.txt",Encoding.Default);
2)File.ReadAllBytes(string path) ;
byte[] str = File.ReadAllBytes("e:b.txt");
MessageBox.Show(System.Text.Encoding.Default.GetString(str));
3)File.ReadAllLines(string path[,Encoding encoding]) ;
string[] str = File.ReadAllLines("e:b.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) : 复制文件
以上是关于文件读写的主要内容,如果未能解决你的问题,请参考以下文章
Java-jxl插件Excel文件读写报错jxl.read.biff.BiffException: Unable to recognize OLE stream
Java-jxl插件Excel文件读写报错jxl.read.biff.BiffException: Unable to recognize OLE stream