2016-08-13 50 views
0

我需要讀取2個文件,並以某種方式組合它們,並將它們都作爲1響應。
我不想創建一個包含兩個文件文本的新文件。
這是我的代碼來響應我的主要文件,C#如何讀取2個文件使用流和響應都爲1

FileStream fs = File.OpenRead(string.Format("{0}/neg.acc", 
           Settings.Default.negSourceLocation)); 
using (StreamReader sr = new StreamReader(fs)) 
{ 
    string jsContent = sr.ReadToEnd(); 
    context.Response.Write(jsContent); 
} 

我需要我的第二個文件要讀取的主要完成之後。

一個簡單的方法來解釋它:
讓我們假設主要文件包括:「你好」
和第二文件包括:「美好的一天是什麼」

我的回答應該是:
「你好」
「多麼美好的一天」

在此先感謝

+0

你不能在同一個讀取操作中完成它。我建議創建一個子程序來讀取文件並進行2個調用,每個文件一個調用,並將響應合併到一個字符串變量中。 –

+0

你能告訴我一個例子怎麼做嗎? – barak

+0

在第二個文件上打開另一個流時出現了什麼問題,讀取它以結束並將第二個文件的內容附加到第一個文件的內容? – Steve

回答

1

的FileStream也像StreamReader的一次性對象。最好在使用語句中包裝它。也使代碼更可重複使用,放置代碼讀取文本文件到自己的方法,這樣的:

public static string CombineFilesText(string mainPath, string clientPath) 
{ 
    string returnText = ReadTextFile(mainPath); 
    returnText += ReadTextFile(clientPath); 

    return returnText; 
} 

private static string ReadTextFile(string filePath) 
{ 
    using (FileStream stream = File.OpenRead(filePath)) 
    { 
     using (StreamReader reader = new StreamReader(stream)) 
     { 
      return reader.ReadToEnd(); 
     } 
    } 
} 
1
using System; 
using System.IO; 
using System.Text; 

class Test 
{ 
    public static void Main() 
    { 
     string File1 = @"c:\temp\MyTest1.txt"; 
     string File2 = @"c:\temp\MyTest2.txt"; 

     if (File.Exists(File1)) 
     { 
      string appendText = File.ReadAllText(File1); 
      if (File.Exists(File2)) 
      { 
       appendText += File.ReadAllText(File2); 
      } 
     } 
    } 
} 
+1

如果將兩個if子句結合在一起並取消它們,則可以減少嵌套。 'if(!File.Exists(File1)||!File.Exists(File2))return;字符串appendText = File.ReadAllText(File1)+ File.ReadAllText(File2);' – Marco

+0

真的Marco - 謝謝! –

0

這是我做的,不知道它的使用C#的正確方式,

static public string CombineFilesText(string mainPath, string clientPath) 
    { 
     string returnText = ""; 

     FileStream mfs = File.OpenRead(mainPath); 
     using (StreamReader sr = new StreamReader(mfs)) 
     { 
      returnText += sr.ReadToEnd(); 
     } 
     FileStream cfs = File.OpenRead(clientPath); 
     using (StreamReader sr = new StreamReader(cfs)) 
     { 
      returnText += sr.ReadToEnd(); 
     } 

     return returnText; 
    } 
相關問題