2017-11-19 5 views
2

にC#output.txt出力リダイレクトをファイルに保存するにはどうすればよいですか?

myprogram.exe <input.txt> output.txt 

に結果がINPUT.TXTから読んでいるよう

class Program 
    { 
     static void Main(string[] args) 
     { 
      String line = Console.ReadLine(); 
      while(line != null) 
      { 
       Console.Out.WriteLine(line); 
       line = Console.ReadLine(); 
      } 
     } 
    } 

の下に私のコードを結果input.txtから読書の下に実装し、書きたい結構です、output.txtは作成できますが、その中には何もありません。

UPDATE:root.causeはoutput.txtがC#言語に関連しない他のプロセスによってロックされています。

+0

をので、これは本当にあなたが表示したいコードのですか? – Crowcoder

+0

@Crowcoderそれを読んで、コンソールのコマンドラインリダイレクトファイルを入力ストリームと出力ストリームとして読み込みます。読み込みはできますが、書き込みはできません。 –

+0

出力のリダイレクト方法を表示できますか? – Crowcoder

答えて

0
using System; 
using System.IO; 

namespace ConsoleApplication1 
{ 
    public class Program 
    { 
     static void Main(string[] args) 
     { 
      var parameters = GetParameters(args); 

      var inputContent = GetInputContent(parameters); 

      CreateOutputFile(parameters, inputContent); 

      Console.WriteLine("it's ok. Press key to exit"); 
      Console.ReadKey(); 
     } 

     private static void CreateOutputFile(MyProgramParameters parameters, string inputContent) 
     { 
      File.WriteAllText(parameters.OutputFileName, inputContent); 
     } 

     private static string GetInputContent(MyProgramParameters parameters) 
     { 
      var result = File.ReadAllText(parameters.InputFileName); 

      return result; 
     } 

     private static MyProgramParameters GetParameters(string[] args) 
     { 
      CheckInputParameters(args); 

      return new MyProgramParameters 
      { 
       InputFileName = args[0], 
       OutputFileName = args[1] 
      }; 
     } 

     private static void CheckInputParameters(string[] args) 
     { 
      if (args.Length != 2) 
       throw new ArgumentException("invalid parameters. For example, myProgram.exe input1.txt output.txt"); 

      var inputFileName = args[0]; 

      if (!File.Exists(inputFileName)) 
       throw new IOException(string.Format("File {0} not found", inputFileName)); 
     } 
    } 

    public class MyProgramParameters 
    { 
     public string InputFileName { get; set; } 

     public string OutputFileName { get; set; } 
    } 
} 
+0

OPはコマンドラインのリダイレクト演算子を使用しており、引数からファイルパスをロードしようとしていません。 – Crowcoder

0

マニュアルは一切読んでいません。ここでは、リンクを持っている:click

あなたは2つの段階でそれを単に実行する必要があります使用

を読むには string[]

からファイルへ

  • ファイルからstring[]に読む
  • 書き込み
    string[] lines = System.IO.File.ReadAllLines(@"C:\Users\Public\TestFolder\WriteLines2.txt"); 
    

    書き込むには

    System.IO.File.WriteAllLines(@"C:\Users\Public\TestFolder\WriteLines.txt", lines); 
    

    全体の機能は、次のようなものになります:あなたは、ファイルを読んでいない、あなたは、標準入力または出力をリダイレクトしていない

    private void CopyFromFileToFile(string inputFileDest, string outputFileDest) 
    { 
        string[] lines; 
        lines = System.IO.File.ReadAllLines(inputFileDest); 
        System.IO.File.WriteAllLines(outputFileDest, lines); 
    } 
    
+0

OPはファイルの読み書き方法を尋ねませんが、OPはそれを行うために標準入出力を使用しようとしています。 – Crowcoder

関連する問題