2015-10-10 85 views
0

我想从一个文件复制内容到另一个文件。除此之外,我还希望在此内容之前和之后添加默认文本。将文件和文本添加到另一个文件c#

我发现下面的方法进行的文件有:

public void MergeFile(String path1, string path2) 
    { 
     var text1 = "Text"; 
     var text2 = "Another text"; 

     using (FileStream source1 = File.Open(path1, FileMode.Open)) 
     { 
      using (FileStream source2 = File.Open(path2, FileMode.Open)) 
      { 
       source1.CopyTo(source2); 
      } 
     } 
    } 

我想text1的在文件和文本2作为文件的最后一行的开始。任何人都可以提供一些建议,如何做到这一点?

我希望解决方案尽可能快,因为source1内容可能长达数千行。

谢谢。

+1

这并不难,有几个方法可以做到这一点。 。如果你需要一个快速功能的简单例子,你应该看看下面的功能来写和/或附加文本到现有的文件以及另一个文件'WriteLine' frunction。我会为你发布一个..你很漂亮关闭你所拥有的,但我个人会重构它到一个方法,该方法检查文件是否不存在,然后写入文件,否则创建一个FileStream并使用WriteLine方法让我知道如果你需要的例子 – MethodMan

回答

1

使用Stream.CopyTo可能是您最好的选择。前后只需拨打FileStream.Write

var text1 = "Text"; 
var text2 = "Another text"; 
using (FileStream source1 = File.Open(source1, FileMode.Open)) 
{ 
    using (FileStream source2 = File.Open(source2, FileMode.Open)) 
    { 
     source2.Write(Encoding.UTF8.GetBytes(text1), 0, text1.Length); 
     source1.CopyTo(source2); 
     source2.Write(Encoding.UTF8.GetBytes(text2), 0, text2.Length); 
    } 
} 

几件事情要注意:

  • 这会不会增加新行字符是(添加\r\n到你的字符串结束时,如果你需要的)
  • 这将覆盖原有文件(如果不需要,请使用不同的FileMode
  • 这不会创建新文件(如果不需要,请使用不同的FileMode
+0

是的,据我所知Stream.CopyTo是一个安全的赌注,但我尝试了一些这种解决方案的变种,没有任何运气。这一个伎俩。谢谢。 还应该说文件检查没有发生在这里,我希望文件被覆盖。 – sirtam

0

如果你想创建一个现有的文件,然后追加到它,你能不能退出方法如下..很简单的理解

static void Main(string[] args) 
{ 
    string path = @"C:\FileWrite_Append\SomeFile.txt"; 

    if (!System.IO.File.Exists(path)) 
    { 
    WriteAndOrAppendText(path, "Text"); 
    } 
    else if (System.IO.File.Exists(path)) 
    { 
    WriteAndOrAppendText(path, "Another Text");    
    } 
} 

private static void WriteAndOrAppendText(string path, string strText) 
{ 
    if (!File.Exists(path)) 
    { 
     StreamWriter fileStream = new StreamWriter(path, true); 
     fileStream.WriteLine(strText); 
     fileStream.Flush(); 
     fileStream.Close(); 
    } 
    else 
    { 
     StreamWriter fileStream2 = new StreamWriter(path, true); 
     fileStream2.WriteLine(strText); 
     fileStream2.Flush(); 
     fileStream2.Close(); 
    } 
} 
相关问题