2016-09-13 4 views
4

ここでは、大きなテキストファイルを小さなファイルに分けて、ここで見ることができるロジックに基づいて、以下のコードを使用しています。私は、一時ファイルが存在しないことを示すFile.WriteAllText行にエラーが発生しています。フローは1つのヘッダーレコードで、その後に複数のレポートデータ行が続き、レポート行の1つの終わりが続き、再び開始されます。誰も私の一時ファイルがここで作成されない理由を知っていますか、私は何が欠けていますか?ありがとう。上記のコードでストリームライターファイルが作成されていません

sw = new StreamWriter("{_processDir}tempfile.txt", false); 

使用文字列補間::

private static void SplitFile() 
{ 
    StreamReader sr = new StreamReader($"{_processDir}{_processFile}"); 
    StreamWriter sw = null; 
    string fileName = string.Empty; 
    while (!sr.EndOfStream) 
    { 
     string line = sr.ReadLine(); 
     if (line.Split('\t')[0] == "FILEIDENTIFIER") 
     { 
      //line is a header record 
      sw = new StreamWriter("{_processDir}tempfile.txt", false); 
      sw.WriteLine(line); 
     } 
     else if (line.Contains("END OF\tREPORT")) 
     { 
      //line is end of report 
      sw.Close(); 
      File.WriteAllText($"{_processDir}{fileName}.txt", File.ReadAllText($"{_processDir}tempfile.txt")); 
     } 
     else 
     { 
      //line is a report datarow 
      fileName = line.Split('\t')[0]; 
      sw.WriteLine(line); 
     } 
    } 
} 

答えて

6

このコードは、あなたの問題を取得している

sw = new StreamWriter($"{_processDir}tempfile.txt", false); 

あなたはのStreamWriterは、データを書き込んだ場所かどうかを確認することができます。

+0

はい@LolCoderアーカイが問題でした。これは私のコードが私にその行のエラーを与えていたほうがずっと簡単でした。私はなぜそれがなかったのか、それがそこにあったときに何が起こったのか分かりませんが、私が進むのを助けてくれた余分な目のためにどうもありがとう。 – Gavin

+0

いつか、それは起こります...あなたを助けてくれてうれしいです:) –

+1

@Gavin '{_processDir} tempfile.txt'が有効なファイル名であるため、エラーが表示されませんでした。 –

関連する問題