日期:2014-05-18  浏览次数:20829 次

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]; 试试