这个程序和《【C#】XML读写与dataGridView的使用》(点击打开链接)一个尿性,只是代码更加简单,因为C#对txt的读写基本上和Java一样,具体见《【Java】输入与输出与JDK1.5之后的新型字符串StringBuilder》(点击打开链接),直接一个FileStream与StreamReader/StreamWriter就足矣,但貌似自己还没有写过C#的文件流,也就在这里写写了。还是弄一个窗体程序,可以读txt到TextBox,并且能将TextBox的内容写入到文件。
如果用户一开始是没有读入txt的话,那就是直接创建一个新的文件再写入。
这个程序的编写步骤如下:
一、场景布置
场景布置如下图所示,在Form1中布置2个Button+1个textbox
二、脚本编写
双击Button1与Button2分别赋予点击事件,编写如下的代码:
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 txtRW
{
public partial class Form1 : Form
{
string txt_FilePath = "";//用来记录当前打开文件的路径的
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new System.Windows.Forms.OpenFileDialog();//一个打开文件的对话框
openFileDialog1.Filter = "文本文件(*.txt)|*.txt";//设置允许打开的扩展名
if (openFileDialog1.ShowDialog() == DialogResult.OK)//判断是否选择了文件
{
txt_FilePath = openFileDialog1.FileName;//打开文件的路径
textBox1.Text = "";//清空textBox1
StreamReader streamReader = new StreamReader(txt_FilePath, Encoding.Default);//记录用户选择的文件路径
while (!streamReader.EndOfStream)
{//如果这个还没有读到文件尾
string line = streamReader.ReadLine();//就一行一行地读
textBox1.Text += line + "\r\n";
}
streamReader.Close();//一定要关闭这个流,不然会和下面保存文件的流冲突
}
else
{
MessageBox.Show("请打开txt文件");
}
}
private void button2_Click(object sender, EventArgs e)
{
FileStream fileStream = null;//根据不同情况使用不同的文件指针
if (txt_FilePath == "")//如果用户没读取过文件,那就获取一个文件路径写入
{
SaveFileDialog saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();//打开一个保存对话框
saveFileDialog1.Filter = "文本文件(*.txt)|*.txt";//设置允许打开的扩展名
if (saveFileDialog1.ShowDialog() == DialogResult.OK)//判断是否选择了一个文件路径
{
txt_FilePath = saveFileDialog1.FileName;//获取保存路径
fileStream = new FileStream(txt_FilePath, FileMode.Create);//以创建的方式打开这个文件
}
else
{
MessageBox.Show("请打开txt文件");
}
}
else//如果用户已经打开了文件
{
fileStream = new FileStream(txt_FilePath, FileMode.Truncate);//以覆盖写入的方式打开这个文件
}
StreamWriter streamWriter = new StreamWriter(fileStream);
streamWriter.Write(textBox1.Text);//开始写入
streamWriter.Flush();//清空缓冲区
//关闭流
streamWriter.Close();
fileStream.Close();
MessageBox.Show("写入txt文件成功!");
}
}
}
这里值得注意主要就是FileStream与StreamReader/StreamWriter两个流,对于StreamReader无须FileStream帮助,自己就能指明程序路径读取,StreamWriter由于写入方式有覆盖写入、创建写入和附加写入的存在,因此需要借助FileStream的帮助,如果希望是附加写入的,FileStream的第二个参数请使用FileMode.Append