2014-09-21 4 views
-1

그래, 내 문제와 관련된 다른 모든 질문을 보았고 어디에서 잘못 될지 알 수 없습니다. 내 목표는 주사위 시뮬레이터의 결과를 텍스트 파일에 쓰고 그 내용을 C#의 목록 상자로 읽는 것입니다. 여기에 지금까지 내 코드입니다 : 내가 잘못 가고 어디에 실제로 텍스트 파일을 작성하고 있다고 생각 System.UnauthorizedAccessException: Access to the path 'C:\Example.txt' is denied.C#에서 텍스트 파일을 읽고 쓰는 데 문제가 있습니다.

:

namespace WpfApplication1 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      Random RandomValue = new Random(); 
      Random RandomValue2 = new Random(); 

      using (StreamWriter outputFile = new StreamWriter("C:\\Example.txt")) 
      { 

       for (int i = 0; i < 100; i++) 
       { 

        int face1 = RandomValue.Next(1, 7); 
        int face2 = RandomValue2.Next(1, 7); 
        int toss = face1 + face2; 

        outputFile.WriteLine(toss); 

       } 

       outputFile.Close(); 
      } 

     } 
     catch (Exception ex) 
     { 

      listBox1.Items.Add(ex); 
     } 

    } 

    private void button2_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 

      using (StreamReader inputFile = new StreamReader("C:\\Example.txt")) 
      { 

      String toss; 
      for (int i = 0; i > 100; i++) 
      { 
       toss = inputFile.ReadLine(); 
       listBox1.Items.Add(toss); 
      } 

     catch (Exception ex) 
     { 
      listBox1.Items.Add(ex); 
     } 
     } 
     } 
    } 
} 

내가 프로그램을 실행하려고 제가 오류가 발생합니다. 읽으려고하면 같은 메시지가 나타납니다. 나는 C#에 매우 익숙하며 파일을 올바르게 호출하지 못한다고 생각합니다. 어떤 통찰력이라도 대단히 환영 할 것입니다!

+5

* 관리자 *로 Visual Studio를 실행 해보십시오. –

+1

'Path.GetTempPath() '와 같이 쓰기 위해 높은 권한이 필요없는 디렉토리를 사용하십시오. –

+1

UAC가 켜져 있으면 C : 드라이브의 루트가 앱에서 물건을 덤핑하는 것을 중지하도록 제한됩니다. 루트의 D : 파티션은 작동하지만 모범 사례는 사용자 계정 영역 내의 디렉터리입니다. – WhoIsRich

답변

0

모두들, 처음에 모두 도와 주셔서 감사드립니다. 내가 잘못 가고있는 곳과 왜 제대로 작동하지 않는지를 발견했습니다. 첫째, C#을 관리자로 실행하면 액세스 문제가 해결되었습니다. Selman22. 그 후 파일에 쓰고 있었지만 파일을 읽지 않고 숫자를 목록 상자로 옮기지 않았습니다. 더 밀접하게 코드를 검토 한 후 나는 for 루프가 한 I이었다로 실행되도록 선언 깨달았다 100보다 큰 것이 아니라 작은 :

for (int i = 0; i > 100; i++)

후 문을 변경 :

for (int i = 0; i < 100; i++)

이제 원활하게 실행됩니다. 다시 한번 감사드립니다!