我想进行文件的拷贝,但是我写的代码却出了问题,也不知道出在那里?
帮我调试下代码  谢谢拉import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Filecopy
{
/**
 * 可以进行文件或者目录的拷贝
 * @param src  是源文件或目录
 * @param obj  是目标文件或目录
 * @author Max
 * @throws IOException 
 */
public static void filecopy(File src,File obj) throws IOException
{
if(src.isFile())
{
int b=0;
File fileobj = new File(
obj.getAbsolutePath()+"\\"+src.getName());
BufferedInputStream in = new BufferedInputStream(
   new FileInputStream(fileobj));
BufferedOutputStream out = new BufferedOutputStream(
   new FileOutputStream(src));

while((b = in.read())!=-1)
{
out.write(b);
}
out.flush();
in.close();
out.close();
}
else
{
File fileobjmirk = new File(obj.getAbsolutePath()  +"\\"+src.getName());
fileobjmirk.mkdirs();
File[] file = src.listFiles();
for(int i=0;i<file.length;i++)
{
filecopy(fileobjmirk,file[i]);
}
}
}
public static void main(String[] args)
{
File fileobj = new File("f:\\filecopy");
if(!fileobj.exists())
{
try
{
fileobj.createNewFile();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
File filesrc = new File("f:\\src");
try
{
filecopy(filesrc,fileobj);
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

解决方案 »

  1.   

    楼主写得有点乱啊:)
    给出两个方法,楼主看着自己改改:)  public static void copy(String inFile, String outFile) 
       throws IOException {    FileInputStream  fin = null;
        FileOutputStream fout = null;
        
        try {
          fin  = new FileInputStream(inFile);
          fout = new FileOutputStream(outFile);
          StreamCopier.copy(fin, fout);
        }
        finally {
          try {
            if (fin != null) fin.close();
          }
          catch (IOException ex) {
          }
          try {
            if (fout != null) fout.close();
           }
          catch (IOException ex) { }
        }
      }
      public static void copy(InputStream in, OutputStream out) 
       throws IOException {
        
        byte[] buffer = new byte[1024];
        while (true) {
          int bytesRead = in.read(buffer);
          if (bytesRead == -1) break;
          out.write(buffer, 0, bytesRead);
        }
        
      }
      

  2.   

    看看我写的,这是我项目里的一部分,运行正常,不过是操作纯文本文件的:
    ------------------------
        public void appendFile(String fromfile , String tofile)
        {
            File from = new File(fromfile);
            File to = new File(tofile);
            
            BufferedReader br = null;
            FileWriter fw = null;
            PrintWriter out = null;        try
            {
                br = new BufferedReader(new FileReader(from) ) ;
                fw = new FileWriter(to, true);
                out = new PrintWriter(fw);
                String line = null;
                while( ( line = br.readLine() ) != null )
                {
                    out.println(line);
                }
            }catch (IOException e)
            {
                System.out.println("=== in VbaExcel 写入文件出错 ");
            }finally
            {
                close(out);  //调用关闭方法
                close(fw);//调用关闭方法
                close(br);//调用关闭方法
            }
        }
    ------------------------