【C#】txt的读写

这个程序和《【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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值