读书人

C#复制文件的有关问题

发布时间: 2012-04-25 19:32:32 作者: rapoo

C#复制文件的问题
我想写一个复制文件的小程序,但是为什么不能复制成功呢,代码如下,请各位帮忙看看,问题出在那

private void Copy()
{
FileStream fsOpen = new FileStream(txtOpen.Text, FileMode.Open);
FileStream fsSave = new FileStream(txtSave.Text, FileMode.Create);
StreamReader sr = new StreamReader(fsOpen, Encoding.UTF7);
StreamWriter sw = new StreamWriter(fsSave, Encoding.UTF7);

long lenth = sr.BaseStream.Length;
int i = 0;
char[] bytes = new char[256];
while (!sr.EndOfStream)
{
i = sr.Read(bytes, 0, 256);
sw.Write(bytes, 0, i);
}

sw.Flush();
sw.Close();
sr.Close();
fsSave.Close();
fsOpen.Close();
}

[解决办法]
http://zhidao.baidu.com/question/114179101.html

参考
File.Copy()
[解决办法]
new char[256],太小了。
[解决办法]
你要实现什么逻辑呢,不过代码中 的意思是直接写入了,从0开始,也就是最终的结果是把你打开的文件的内容直接覆盖到保存的文件里。/
我想你是想要追加代开文件的内容到要保存的文件中,是这样的吗?( sw = File.AppendText(Path);)
[解决办法]
GOOD。
[解决办法]

C# code
while (true)  {  i = sr.Read(bytes, 0, 256);  sw.Write(bytes, 0, i);  if (i < 256)  {  break;  }  }
[解决办法]
直接调用方法。如果真自己写,实际是重新建立文件,读取写入,好好看下代码。
[解决办法]
C# code
        private  void Copy()        {            FileStream fsOpen = new FileStream(txtOpen.Text, FileMode.Open);            FileStream fsSave = new FileStream(txtSave.Text, FileMode.Create);                                                  byte[] bytes=new byte[fsOpen.Length];             fsOpen.Read(bytes, 0, bytes.Length);                         fsSave.Write(bytes, 0, bytes.Length);                                              fsSave.Close();            fsOpen.Close();        }
[解决办法]
char[] bytes = new char[256]; 改成byte[] bytes = new byte[256]; 试试

读书人网 >C#

热点推荐