문제

모두 좋은 아침,

C# 코드의 메소드에 몇 가지 문제가 있는데, 이는 datagridView를 .txt 파일에 저장할 수 있도록해야합니다.

코드는 다음과 같습니다.

private void saveToTxt_Btn_Click(object sender, EventArgs e)
    {
        filenameText.Text = serviceDataGrid.Rows.Count.ToString();
        //string toOutFile = @"C:\" + filenameText.Text+".txt";
        string toOutFile = @"C:\hello.txt";

        FileStream toFile = new FileStream(toOutFile, FileMode.Create);

        TextWriter toText = new StreamWriter(toOutFile);

        int count = serviceDataGrid.Rows.Count;

        toText.WriteLine("\t\t" + filenameText.Text);
        toText.WriteLine("\t\t" + directoryText.Text+"\n\n");

        for (int row = 0; row < count-1; row++)
        {
            toText.WriteLine(serviceDataGrid.Rows[row].Cells[0].Value.ToString());
        }
        toText.Close();
        toFile.Close();
    }

다음 줄은 오류를 반환합니다.

TextWriter toText = new StreamWriter(toOutFile);

IoException은 도달되지 않았습니다.프로세스는 다른 프로세스에서 사용하기 때문에 'C : Hello.txt'파일에 액세스 할 수 없습니다.

나는 문제가 무엇인지 완전히 확신하지 못하지만 Filestream과 TextWriter 사이에 갈등이 있음을 시사합니다.

아무도 이것에 대해 어떤 빛을 흘릴 수 있습니까? 문안 인사

도움이 되었습니까?

해결책

당신은 그것을 두 번 열고 있습니다. 모든 것을 잃습니다 toFile 물건 완전히, 및 사용 using 주위에 toText:

    using(TextWriter toText = File.CreateText(toOutFile))
    {
        toText.WriteLine("\t\t" + filenameText.Text);
        toText.WriteLine("\t\t" + directoryText.Text+"\n\n");

        foreach(DataGridViewRow row in serviceDataGrid.Rows)
        {
            toText.WriteLine(row.Cells[0].Value.ToString());
        }
    }

또한; 당신은 정말로 의미합니까? WriteLine(... + "\n\n") ?

다른 팁

라인을 사용할 때

TextWriter toText = new StreamWriter(toOutFile);

StreamWriter (String FilePath) 생성자가 존재하지 않으면 파일을 생성하기 때문에 다음 줄은 필요하지 않습니다.

FileStream toFile = new FileStream(toOutFile, FileMode.Create);

그리고 Marc가 맞습니다. 다른 인스턴스 변수에서 이미 파일을 열었습니다. 다시 열 수 없습니다.

나는 당신이 파일 이름으로 작가를 열었다는 것을 감독합니다. TextWriter totext = new StreamWriter (tofile)를했다고 생각했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top