import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class FileUtil
{
    public static byte[] loadFileData(String fileName) throws IOException
    {
     File file=new File(fileName);
     byte[] b=new byte[(int)file.length()];
     if(file.exists())
     {
     FileInputStream input=new FileInputStream(file);    
     int temp=0;    
     for(int i=0;i<b.length;i++)
     {
     b[i]=(byte)input.read();
     }
     input.close();    
       }    
       else
       {
       System.out.println("要复制的文件不存在");
       }
      
       return b;    
    }
    public static void saveDataToFile(String fileName, byte[] data) throws IOException
    {
     File file=new File(fileName);  
     if(file.getParent()==null)
     {
     writeFile(new FileOutputStream(new File(fileName+File.separator+"输入的是根目录.txt")),data);    
     }   
     if(!file.exists())
     {
     if(file.getName().indexOf(".")==-1)
     {
     file.mkdirs();
     writeFile(new FileOutputStream(new File(fileName+File.separator+"输入的是目录.txt")),data);    
     }   
     else
     {
     file.getParentFile().mkdirs();
     writeFile(new FileOutputStream(file),data);      
     } 
     }    
     else
     {
     System.out.println("文件存在了啊!");//当文件存在的时候为什么还覆盖文件呢?都跳到这了,为什么文件还会被重新写?
     }
    }
    public static void main(String[] args) throws Exception
{
saveDataToFile("e:\\",loadFileData("C:\\1.txt"));
}
public static void writeFile(OutputStream output,byte[] data) throws IOException
{
for(int i=0;i<data.length;i++)
     {
     output.write(data[i]);
     }   
     output.close(); 
}
}

解决方案 »

  1.   

    问题就是文件存在的时候为什么还跳到else里面覆写文件。else里面有句注释
      

  2.   

    if(!file.exists())肯定走else的嘛什么覆写
      

  3.   

    是啊,既然走的是else,为什么原先的文件被覆盖了呢,文件的修改时间变了,像是重新生成的。但else里面并没操作文件。
      

  4.   

            saveDataToFile("e:\\",loadFileData("C:\\1.txt"));
    这句调用有问题吧。
    传入的"e:\\"  存在,执行 else 分支
      

  5.   

    "e:\\" 存在,file.exists()它返回true,这样就到else了,再加上 if(file.getParent()==null),它就把文件再写一遍。这程序结构上还是有问题。
      

  6.   

    java 一定要心细。慢慢磨练
      

  7.   

    只要debug一下就看出来了不必这么麻烦