2017-10-20 9 views
1

私のプロジェクト(デスクトップアプリケーション全体)が適切な方法でStreamWriterまたはStreamReaderを使用できない理由を数時間にわたって理解しようとしています。すべての赤線が離れて行くようにしよう、上記のコードを実行:問題は、編集 StreamWriterとStreamReaderが正しく機能しない

...私は、以下のようにのStreamWriterやStreamReaderをどちらかにfilePathに(単純な文字列)を与えることをしようということ

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

はそれが(正しい - パスPARAMTERで)どのように見えるかで、それが現在のように見えるものである

ドキュメント: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つのソリューションのための2つのプロジェクトで構成され、全く新しいソリューションを作成してみました、私は次のようになります推測します正確に言えば?)、それはかなりうまくいく。他の解決策は3つのクラスライブラリで構成されているので、私はこれを行いました。問題を再現することができれば、一貫していることをお勧めしたいと思いました。そこで、単純なテキストファイルを作成し、テキストを入力して、新しいソリューションのTextBoxの画面に出力しました。これは基本的に私が今何をすべきか分かりませんでした。

誰でもこの問題の原因を知ることができますか?

+1

これはどの種類のプロジェクトですか、それは完全なデスクトップアプリですか、これはアプリストアアプリですか、電話アプリですか? –

+0

コードとエラーメッセージをスクリーンショットとしてではなく、テキストとして投稿してください。つまり、 "filePath(単なる文字列)"と言います。StreamReaderの問題に寄与する恐れのある文字列の複雑さの例を挙げることができますか? –

+1

あなたのプロジェクトはどのネットフレームワークですか?プロジェクトのプロパティを見てください。 – Igor

答えて

2

あなたがターゲットとしている.NET(.Net Standard 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を読むことができます。

関連する問題