0

書いているプログラムで作業しているファイルにアクセスできないようです。私は自分のプログラムがあなたの選択したファイルを開くようにしたいので、これをどのように正確に動作させるのか分かりません。その情報を配列から開いたファイルに書き込みます。いくつかのコードで作業を開始しようとすると、「別のプロセスで使用されているため、プロセスはファイル 'file' にアクセスできません。」と表示されます。これが私がこれまでに持っているものです。私にお知らせください。ありがとうございました。問題のある領域は、「これはテストです」と書いたコードの Save_Click セクションです ありがとう。

     public partial class ListingSearch : Form
{
    string line;
    DialogResult result;
    string fileName;
    int i = 0;
    string[] first = new string[100];
    string[] last = new string [100];
    string[] phone = new string [100];
    string[] grade = new string [100];

    public ListingSearch()
    {
        InitializeComponent();
        MessageBox.Show("Please be sure to open a file before beginning");
    }

    private void OpenFile_Click(object sender, EventArgs e)
    {
        using (OpenFileDialog filechooser = new OpenFileDialog())
        {
            result = filechooser.ShowDialog();
            fileName = filechooser.FileName;
            System.IO.StreamReader file =
                new System.IO.StreamReader(fileName);

            while ((line = file.ReadLine()) != null)
            {
                string[] words = File.ReadAllText(fileName).Split(new string[] { "\n", "\r\n", ":" }, StringSplitOptions.RemoveEmptyEntries);
                //firstName.Text = words[4];
                //lastName.Text = words[5];
                //telephone.Text = words[6];
                //GPA.Text = words[7];
            }
            Read.Enabled = true;
       }
    }

    private void Save_Click(object sender, EventArgs e)
    {
        File.AppendAllText(fileName, "This is a test");
    }

    private void Read_Click(object sender, EventArgs e)
    {
        MessageBox.Show(fileName);
        MessageBox.Show(File.ReadAllText(fileName));
    }

    private void info_Click(object sender, EventArgs e)
    {
        first[i] = firstName.Text;
        firstName.Text = " ";
        last[i] = lastName.Text;
        lastName.Text = " ";
        phone[i] = telephone.Text;
        telephone.Text = " ";
        grade[i] = GPA.Text;
        GPA.Text = " ";
        i++;
    }

    private void displayinfo_Click(object sender, EventArgs e)
    {
        if (i == 0)
            MessageBox.Show("Nothing to display!");
        else
        for (int j = 0; j < i; j++)
        {
            MessageBox.Show(first[j] + " " + last[j] + "\r" + phone[j] + "\r" + grade[j]);
        }
    }
4

3 に答える 3

2

ここでエラーが発生します

File.ReadAllText(fileName) 

ここでその前に同じファイルを開くため

System.IO.StreamReader file = new System.IO.StreamReader(fileName);
于 2012-12-06T09:27:18.197 に答える
1

読み終わったら、ファイルを閉じる必要があります。また、後でFile.ReadAllTextファイルの開閉をすべて独自に処理する which を使用するため、ファイルを開いている理由がまったくわかりません。

OpenFile_clickイベントは次のようになります。

   using (OpenFileDialog filechooser = new OpenFileDialog())
    {
        result = filechooser.ShowDialog();
        fileName = filechooser.FileName;

        string[] words = File.ReadAllText(fileName).Split(new string[] { "\n", "\r\n", ":" }, StringSplitOptions.RemoveEmptyEntries);

        Read.Enabled = true;
    }
于 2012-12-06T17:53:59.253 に答える
0

StreamReader を閉じていません。C# は、ロックするまでファイルをロックします。または、StreamReader を閉じた後に StreamWriter を使用することもできます

于 2012-12-06T17:53:58.283 に答える