File.exe关闭时,FileStream Reader和writer同时进行

时间:2016-05-25 17:05:35

标签: c#

每当我关闭File.txt时,我想在file.exe内写一个计数器 例如,在我第一次关闭它时,它必须写入1,第二次而不是1,它必须是2,第三次必须是3,依此类推。

但问题是,在任何给定时间,编译器必须读取存储在文件中的数字,增加它,然后写入。

这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms; 

namespace check
{
    public partial class Form1 : Form
    {
        public string[] line = { "1", "2", "3", "4", "5", "6", "7", "8", "9","10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" };
        public int i = 0;

        public Form1()
       {
            InitializeComponent();
       }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            FileStream textfile = new FileStream(@"C:\TtAL.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
            var Reader = new StreamReader(textfile);
            var Writer = new StreamWriter(textfile);
            i = Convert.ToInt32(File.ReadAllText(@"C:\TtAL.txt"));
            if (File.ReadAllText(@"C:\TtAL.txt") == null) { i = -1; }
            i ++;
            File.WriteAllText(@"C:\TtAL.txt", line[i]);

            MessageBox.Show(20 - Convert.ToUInt32(line[i]) + " times remained.");
            textfile.Close();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

这样的事情会起作用:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    int i = 1;

    if (File.Exists(@"C:\TtAL.txt")) //if there is a file try to use it
    {
        if (int.TryParse(File.ReadAllText(@"C:\TtAL.txt"), out i)) //if you can get a number use it
            i++;
    }

    File.WriteAllText(@"C:\TtAL.txt", i.ToString());
}