FileStream 和StreamReader结合使用

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace WindowsApplication6

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

 

private void button3_Click(object sender, EventArgs e)//IO类FileStream处理字节流

{

//IO类FileStream处理字节流,采用FileMode.Open将byte通过char转换成文本文件

//说明:

//Append:如果文件存在则打开文件,将光标移到文件尾部

//create打开文件时,如果文件不存在则创建文件,存在则覆盖文件

//createnew:打开文件时,如果文件不存在则创建文件,存在则抛出异常

//open打开文件时,如果文件不存在则抛出异常

//openorcreate存在打开,否则创建

//truncate打开现有文件,清楚文件的内容,但远文件的创建日期还在

 

FileInfo filein = new FileInfo(textBox1.Text);

if (!filein.Exists)

{

MessageBox.Show("没有文件");

return;

}

else

{

FileStream fstream = new FileStream(textBox1.Text, FileMode.Open);

byte[] buf = new byte[filein.Length];

fstream.Read(buf, 0, buf.Length);

//字节到字符的装换

Decoder d = Encoding.UTF8.GetDecoder();

char[] c = new char[filein.Length];

d.GetChars(buf, 0, buf.Length, c, 0);

//字符数组转换字符串 string为引用类型数组

string s = new string(c);

textBox2.Text = s;

fstream.Close();

}

}

 

private void button5_Click(object sender, EventArgs e) // StreamReader读数据

{

// StreamReader 旨在以一种特定的编码输入字符,而 Stream 类用于

//字节的输入和输出。使用 StreamReader 读取标准文本文件的各行信息。

 

//除非另外指定,StreamReader 的默认编码为 UTF-8,而不是当前系统

//的 ANSI 代码页。UTF-8 可以正确处理 Unicode 字符并在操作系统的本地化版本上提供一致的结果。

 

//默认情况下,StreamReader 不是线程安全的。有关线程安全包装的信息

 

//Read(array<Char>[]()[], Int32, Int32) 和 Write(array<Char>[]()[], Int32, Int32) 方法

//重载读取和写入 count 参数指定的字符数。

}

 

private void button6_Click(object sender, EventArgs e)//StreamWriter写数据

{

StreamWriter sw = new StreamWriter(textBox1.Text,true, Encoding.UTF8);

sw.Write(textBox2.Text);

sw.Close();

}

 

private void button8_Click(object sender, EventArgs e) // FileStream 和StreamReader

{

FileStream fstream = new FileStream(textBox1.Text, FileMode.Open,FileAccess.ReadWrite);

StreamReader sr = new StreamReader(fstream);

string s = "";

do

{

s += sr.ReadLine();

}

while (sr.ReadLine() != null);

textBox2.Text = s;

sr.Close();

}

}

}

posted @ 2014-04-18 10:52  Daniel_Lu  阅读(727)  评论(1编辑  收藏  举报