2017-10-20 14 views
1

몇 시간 동안 내 프로젝트 (전체 데스크톱 응용 프로그램)에서 적절한 방식으로 StreamWriter 또는 StreamReader를 사용할 수 없는지 이해하려고 노력했습니다. 만들려고 위의 코드를 실행하는 모든 빨간색 선이 사라 : 문제는 내가 포기하려고하면 중 하나를 아래 그림과 같이 StreamWriter를 또는에서는 StreamReader적인 filePath (단순한 문자열) ...StreamWriter 및 StreamReader가 제대로 작동하지 않음

private readonly string _filePath = @"...Text.txt"; 

public string TestMethod(string text) 
{  
     // Does not accept a string as an argument, which it should based on the documentation 
     StreamReader reader = new StreamReader(); 
     text = reader.ReadToEnd(); 
     reader.Close(); 

     return text; 
} 

편집이다 사건은이 게시물 아래로 더 게시됩니다. 다음은

는 현재 (잘못) 모습입니다

Wrong

Correct

위 그것이 어떻게 보일지됩니다 (정확한 - 경로 있었던 파라미터와 함께)

문서 : https://msdn.microsoft.com/en-us/library/f2ke0fzy(v=vs.110).aspx

... 장소 전체에 오류가 발생합니다. 내가 말하는 오류가 그것을 다른 인수를주고 그것을 다른 방법을 수행하려고 :

System.IO.FileNotFoundException: 'Could not load file or assembly 'System.Console, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.' 

내가 그렇게 2 클래스 라이브러리 (1 개 솔루션이 개 프로젝트로 구성되어 완전히 새로운 솔루션을 만들려고, 나는 것 같아요 맞습니까?) 그리고 그것은 거의 작동합니다. 다른 해결책은 3 개의 클래스 라이브러리로 구성되어 있기 때문에이 작업을 수행 했으므로 문제를 재현하는 데 일관성을 유지하는 것이 좋을 것이라고 생각했습니다. 그래서 간단한 텍스트 파일을 만들고 텍스트로 채 웠습니다. 새로운 솔루션의 TextBox에서 화면에 출력으로 가져 왔습니다. 이것은 기본적으로 지금 무엇을해야할지 전혀 몰랐습니다.

이 문제가 발생할 수있는 사람은 누구입니까?

+1

어떤 종류의 프로젝트입니까, 전체 데스크톱 앱입니까, 아니면 앱 스토어 앱입니까, 아니면 전화 앱입니까? –

+0

코드 및 오류 메시지를 캡쳐 화면이 아닌 텍스트로 보내주십시오. 즉, "filePath (단순한 문자열)"을 언급합니다. - StreamReader의 문제에 공헌 할 수있는 문자열의 복잡성에 대한 예제를 제공 할 수 있습니까? –

+1

귀하의 프로젝트는 어떤 .net 프레임 워크를 타겟팅합니까? 프로젝트 속성을 살펴보십시오. – Igor

답변

2

간단히 말해서 .Net 표준 1.4 버전의 StreamReader 클래스는 파일 경로를 사용하는 생성자를 지원하지 않습니다.

FileStream 클래스를 사용하여 파일을 열고 StreamReader을 사용하여 파일을 읽어야합니다. 의견을 바탕으로

https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader.-ctor?view=netstandard-1.4

using System; 
using System.IO; 

class Test 
{ 

    public static void Main() 
    { 
     string path = @"c:\temp\MyTest.txt"; 

     try 
     { 
      if (File.Exists(path)) 
      { 
       File.Delete(path); 
      } 

      using (StreamWriter sw = new StreamWriter(path)) 
      { 
       sw.WriteLine("This"); 
       sw.WriteLine("is some text"); 
       sw.WriteLine("to test"); 
       sw.WriteLine("Reading"); 
      } 

      using (FileStream fs = new FileStream(path, FileMode.Open)) 
      { 
       using (StreamReader sr = new StreamReader(fs)) 
       { 

        while (sr.Peek() >= 0) 
        { 
         Console.WriteLine(sr.ReadLine()); 
        } 
       } 
      } 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine("The process failed: {0}", e.ToString()); 
     } 
    } 
} 
0

는 현재 .NET의 StreamReader 파일 경로를 취할 수있는 적절한 과부하가 없습니다 : 아래

는 문서에서 복사 한 예이다. 다른 대안 접근법을 사용할 수 있습니다. 원하는 파일을 여는 데 FileStream을 사용하고 StreamReader을 사용하여 읽을 수 있습니다.