可能没有其他方法可以做到这一点,但是有没有办法将一个文本文件的内容附加到另一个文本文件中,同时在移动后清除第一个文本文件?
我知道的唯一方法就是使用一个读写器,这对大型文件来说似乎效率低下......
谢谢!
Jon*_*eet 27
不,我认为没有任何事情能做到这一点.
如果这两个文件使用相同的编码,并且您不需要验证它们是否有效,则可以将它们视为二进制文件,例如
using (Stream input = File.OpenRead("file1.txt"))
using (Stream output = new FileStream("file2.txt", FileMode.Append,
FileAccess.Write, FileShare.None))
{
input.CopyTo(output); // Using .NET 4
}
File.Delete("file1.txt");
Run Code Online (Sandbox Code Playgroud)
请注意,如果file1.txt包含字节顺序标记,则应首先跳过此标记以避免将其置于中间位置file2.txt.
如果您不使用.NET 4,您可以编写自己的等效Stream.CopyTo...即使使用扩展方法也可以无缝切换:
public static class StreamExtensions
{
public static void CopyTo(this Stream input, Stream output)
{
if (input == null)
{
throw new ArgumentNullException("input");
}
if (output == null)
{
throw new ArgumentNullException("output");
}
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
}
}
Run Code Online (Sandbox Code Playgroud)
暂时忽略错误处理,编码和效率,这样的事情可能会起作用(但我还没有测试过)
File.AppendAllText("path/to/destination/file", File.ReadAllText("path/to/source/file"));
Run Code Online (Sandbox Code Playgroud)
然后,您只需在此步骤完成后删除或清除第一个文件.
| 归档时间: |
|
| 查看次数: |
16641 次 |
| 最近记录: |