C# WPF文件I/O数据流技术
版权声明:本文为博主原创文章, 如需转载请附上原文出处链接和本声明。
近期在做一个项目主要是一个久坐的提醒,部分涉及到文件的I/O数据流的技术。
利用C#的WPF的I/O流,将Textbox的数据传入一个txt里面。
我用的是VS2012的版本。
废话不多说,请看!
File类
File类支持对文件的基本操作,它包括用于创建、复制、删除、移动和打开这几个方法。一下列出几个常用的几种方法。
方法 | 说明 |
---|---|
Copy | 将现有文件复制到新文件 |
Create | 在指定路径中创建文件 |
Delete | 删除指定的文件 |
Exists | 确定指定的文件是否存在 |
Move | 将指定的文件移到新位置 |
Open | 打开指定路径上的FileStream |
以上是我常用的几个File方法
这里我主要提起几个方法
Exists方法
这个方法主要是判断用于指定位置的文件是否存在。
返回值:有则为:true;无则返回false。
File.Exists(@"C:\Users\Text.txt);
Open方法
Open的方法就是打开指定位置的文件,无需什么注意。
File.Open(@"C:\Users\Text.txt);
Create方法
Create的方法就是创建一个文件。
File.Create(@"C:\Users\Text.txt);
这样就能在在C盘底下Users中创建一个Text文本文档了。
FileStream类
在C#中文件I/O流使用FileStream类实现,该类公开以文件为主的Stream,表示在磁盘或网络路径上指向文件的流。一个FileStream类的实例实际上代表一个磁盘文件,它通过Seek方法进行对文件的随机访问,也同时包含了流的标准输入、标准输出和标准错误等。FileStream默认对文件的打开方法是同步的,但它同样很好地支持异步操作。
方法 | 说明 |
---|---|
BeginRead | 开始异步读操作 |
BeginWrite | 开始异步写操作 |
Close | 关闭当前流并释放与之关联的所有资源 |
Read | 从流中读取字节块并将该数据写入指定缓冲区中 |
ReadByte | 从文件中读取一个字节,并将读取位置提升一个字节 |
Write | 使用从缓冲区读取的数据将字节块写入该流 |
WriteByte | 将一个字节写入文件流的当前位置 |
StreamWrite类
StreamWrite类是专门用来处理文本文件的类,可以方便地向文本文件中写入字符串,同时它也责任重要的转换以及处理向FileStream对象写入的工作。
方法 | 说明 |
---|---|
Close | 关闭当前的StringWriter |
Write | 写入到StringWriter的此实例中 |
WriteLine | 写入重载参数指定的某些数据,后跟行结束符 |
StreamReader类
StreamReader类是专门用来读取文本文件的类。StreamReader可以冲底层Stream对象创建StreamReader对象的实例,而且还能指定编码规范参数。创建StreamReader对象后,它提供了许多用于读取和浏览字符数据的方法。
方法 | 说明 |
---|---|
Close | 关闭StringReader |
Read | 读取输入字符串中的下一个字符或下一组字符 |
ReadBlock | 从当前流中读取最大Count的字符并从index开始将数据写入Buffer |
ReadLine | 从基础字符串中读取一行 |
ReadToEnd | 将整个流或从流的当前位置到流的结尾作为字符穿读取 |
基本上我用的就是这几个类来操作,今天的主角就是在WPF中如何的用Stream来将字符串中的数据写入到txt中。
先创建好界面
然后继续创建后台代码,实现写入的效果,代码如下:
public MainWindow()
{
InitializeComponent();
}
FileStream Write = new FileStream(@"D:\Text.txt", FileMode.Open, FileAccess.Write);
private void btn_Write_Click(object sender, RoutedEventArgs e)
{
if (txt_Write.Text == string.Empty)//判断TextBox中的值是否为空
{
MessageBox.Show("写入的内容不能为空");
}
else
{
StreamWriter sw = new StreamWriter(Write);
sw.Write(txt_Write.Text);
txt_Write.Text = "";
sw.Close();
}
}
private void btn_Read_Click(object sender, RoutedEventArgs e)
{
FileStream Read = new FileStream(@"D:\Text.txt", FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(Read);
txt_Read.Text = sr.ReadToEnd();
}
最后就可以实现效果了。
这里有个注意事项,就是盘符的问题
这边会显示这样的错误,不是路径打错了就是盘符的问题了,这个时候,我们首先要将所要读写的文件找到文件所在地,按下shift+右键,复制文件路径,然后覆盖进代码里就能避免这种事情,这就是盘符的解决方法。
写入
读出
本次到此结束了,这也是我第一次发表的博客,希望大家多多支持。