gpt4 book ai didi

c# - 轮询申请 : StreamWriter not writing to file

转载 作者:太空狗 更新时间:2023-10-29 17:56:06 25 4
gpt4 key购买 nike

我正在为学校编写一个程序,所以我并不完全希望有人为我修复它,但如果有人能指出他们看到错误的地方,那将非常有帮助! :D

该程序应该在文本框中输入一系列数字,用户在输入每个整数后按回车键,当他们按回车键时,数字会写入文件,因此每个数字都用逗号分隔.当用户点击完成按钮时,按钮和文本框被禁用,然后一个新按钮和一个列表框被启用。用户可以选择结果按钮以在列表框中查看在文本框中输入的数字的频率。

我觉得除了它实际上没有写入文件外,大部分都工作正常。这只是我的第一年,所以我在这方面还很陌生,但从我掌握的信息来看,一切看起来都是正确的。

如果有人能再次指出我应该在哪里寻找错误,我将非常感激!这是我的代码:

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

namespace StudentPoll1
{
public partial class Form1 : Form
{
const string FILENAME = "numbers.txt";
FileStream file = new FileStream(FILENAME,
FileMode.Create, FileAccess.ReadWrite);

public Form1()
{
InitializeComponent();
btnResult.Enabled = false;
}

private void tbInput_KeyDown(object sender, KeyEventArgs e)
{
const char DELIM = ',';
int input;
const int MIN = 1;
const int MAX = 10;

int.TryParse(tbInput.Text, out input);
if (e.KeyCode == Keys.Enter)
{
try
{
if (input < MIN || input > MAX)
{
MessageBox.Show("Please enter an integer between 1 and 10");
}
else
{
StreamWriter writer = new StreamWriter(file);
writer.WriteLine(input + DELIM + " ");
}
}
catch (IOException)
{
MessageBox.Show("Error with input");
}
finally
{
tbInput.Clear();
}
}
}

private void btnDone_Click(object sender, EventArgs e)
{
file.Close();
btnDone.Enabled = false;
btnResult.Enabled = true;
lbOutput.SelectionMode = SelectionMode.None;
}

private void btnResult_Click(object sender, EventArgs e)
{
int[] ratings = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] results = new int[10];
int entry;
const char DELIM = ',';
FileStream fs = new FileStream(FILENAME,
FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(fs);
string record;
string[] fields;
record = reader.ReadLine();
while (record != null)
{
fields = record.Split(DELIM);
entry = Convert.ToInt32(fields[0]);
foreach (int x in ratings)
{
if (entry == ratings[x])
{
++results[x];
}
}
}
for (int num = 0; num < ratings.Length; ++num)
{
lbOutput.Items.Add(ratings[num] + " " + results[num]);
}
fs.Close();
reader.Close();
}
}
}

最佳答案

StreamWriter(和 StreamReader)被缓冲。 IO 操作通常比在内存中工作慢得多,因此文件通常以 block 的形式读取和写入。

如果您只使用 StreamWriter 写入少量内容,您将获得此处所见的行为。

您写入的信息已写入 StreamWriters 缓冲区,它不会出现在磁盘上,直到您刷新 缓冲区或关闭流。

关于c# - 轮询申请 : StreamWriter not writing to file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29673885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com