0
int AccNum;
FileStream myfile = new FileStream("C:\\bankin.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamReader rd = new StreamReader(myfile);
StreamWriter wt = new StreamWriter(myfile);
int a = Convert.ToInt32(rd.ReadLine());
AccNum = a;
a += 1;
wt.WriteLine(Convert.ToString(a));
Console.WriteLine(rd.ReadLine());
rd.Close(); 
wt.Close();
myfile.Close();

ファイル bank.txt で整数値をインクリメントしようとしていますが、次のエラーが発生します。

閉じたファイルにアクセスできません

4

4 に答える 4

1

もしかしてrd前に閉めてるからwt

その場合は、次のusingステートメントを使用して、将来この混乱を防ぐことをお勧めします。

int AccNum;
using (FileStream myfile = new FileStream("C:\\bankin.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite)) {
    using (StreamReader rd = new StreamReader(myfile)) {
        using (StreamWriter wt = new StreamWriter(myfile)) {
            int a = Convert.ToInt32(rd.ReadLine());
            AccNum = a;
            a += 1;
            wt.WriteLine(Convert.ToString(a));
            Console.WriteLine(rd.ReadLine());
        }
    }
}
于 2013-07-19T08:01:16.263 に答える
1

usingステートメントを使用するようにコードを変更します。

IDisposable オブジェクトを正しく使用するための便利な構文を提供します。

int AccNum;
using(FileStream myfile = new FileStream("C:\\bankin.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
using(StreamReader rd = new StreamReader(myfile))
using (StreamWriter wt = new StreamWriter(myfile))
{
    int a = Convert.ToInt32(rd.ReadLine());
    AccNum = a;
    a += 1;
    wt.WriteLine(Convert.ToString(a));
    Console.WriteLine(rd.ReadLine());
}
于 2013-07-19T08:04:56.927 に答える
0
int AccNum;
using(FileStream myfile = new FileStream("C:\\bankin.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    using(StreamReader rd = new StreamReader(myfile))
    {
        using(StreamWriter wt = new StreamWriter(myfile))
        {
            int a = Convert.ToInt32(rd.ReadLine());
            AccNum = a;
            a += 1;
            wt.WriteLine(Convert.ToString(a));
        }
        Console.WriteLine(rd.ReadLine());
    }
}

「using」を使用することをお勧めします。

于 2013-07-19T08:07:29.750 に答える