2011-06-18 158 views
0

可能有人演示如何到一个文本文件中的所有行复制到另一个(不覆盖目标文件,如:复制文本从一个文本文件到另一个

文件拷贝行到文件B(无覆盖在FILEB现有生产线 - 。将它们添加)

+1

作业?闻起来像它。 –

回答

4

这看起来像功课,所以我只给你一些指点

打开与FileMode.OpenFileAccess.Read参数的第一个文件与FileMode.AppendFileAccess.Write打开第二个文件参数

循环遍历第一个文件,向第二个文件写入从第一个文件读取的内容。

查看FileStream类获取更多信息。

+0

为什么不使用File类中的方法呢?如果可以调用ReadLines和这样的IMO,则在FileStream上循环有点冗余。 – Neowizard

+0

没有作业伙伴:) – Ben

+0

@Neowizard:'File.ReadLines'可能对程序员更方便,但对用户来说,如果文件大于RAM或虚拟地址空间,则用户的用处会大大减少。 – Timwi

0

这是我的解决方案。希望它能帮助:

Dim fileAContent As String = "" 

    Using strR As New IO.StreamReader(fileAPath) 
     fileAContent = strR.ReadToEnd 
    End Using 

    Using strW As New IO.StreamWriter(fileBPath, True) 
     strW.Write(fileAContent) 
     strW.Flush() 
    End Using 

的StreamWriter第二个参数是密钥。它会将附加内容到文件末尾。

首先读取第一个文件中的所有行,然后将所有行追加到第二个文件。

0

希望这个答案可以帮助你。我以一种可以遵循的方式编写它,让您对步骤有很好的理解。 要开始,用你的文件替换,然后运行代码,看看它是否给你你想要的结果。

var file1 = @"C:\Users\User\Desktop\file1.txt"; 
var file2 = @"C:\Users\User\Desktop\file2.txt"; 

var file1Lines = File.ReadAllLines(file1); 
var file2Lines = File.ReadAllLines(file2).ToList(); 

// before the copy 
Console.WriteLine("**Before the copy**"); 
Console.WriteLine(File.ReadAllText(file2)); 

foreach (var l in file1Lines) 
{ 
    file2Lines.Add(l); 
} 
File.WriteAllLines(file2, file2Lines); 

// after the copy 
Console.WriteLine("**After the copy**"); 
Console.WriteLine(File.ReadAllText(file2)); 
+0

这应该工作,但是因为目标是将'file1'加到'file2'中,所以不需要读取'file2'的现有内容。只需将'file1'的内容附加到已有的内容即可。删除'file2Lines'的所有用法,而不是添加'File.AppendAllLines(file2,file1Lines);'更有效率和更少的代码行。 – BACON

+0

@BACON按照你所建议的方式做它不会正确追加列表中的行。 file1Lines的第一行被附加到file2的最后一行 – dek

+0

我明白你的意思了。这真的取决于文件是否以换行符结束,以及期望的行为是什么。如果附加文本应该以新行开头,则可以在调用File.AppendAllLines之前插入File.AppendAllText(file2,Environment.NewLine);或者将调用改为File.AppendAllLines(file2,new [] {Environment.NewLine} .Concat(file1Lines));'。 – BACON

相关问题