`
abalone
  • 浏览: 130663 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java copy and delete file

    博客分类:
  • java
阅读更多
import  java.io.*; 

public  class  FileOperate  { 
   public  FileOperate()  { 
   } 

   /** 
     *  新建目录 
     *  @param  folderPath  String  如  c:/fqf 
     *  @return  boolean 
     */ 
   public  void  newFolder(String  folderPath)  { 
       try  { 
           String  filePath  =  folderPath; 
           filePath  =  filePath.toString(); 
           java.io.File  myFilePath  =  new  java.io.File(filePath); 
           if  (!myFilePath.exists())  { 
               myFilePath.mkdir(); 
           } 
       } 
       catch  (Exception  e)  { 
           System.out.println("新建目录操作出错"); 
           e.printStackTrace(); 
       } 
   } 

   /** 
     *  新建文件 
     *  @param  filePathAndName  String  文件路径及名称  如c:/fqf.txt 
     *  @param  fileContent  String  文件内容 
     *  @return  boolean 
     */ 
   public  void  newFile(String  filePathAndName,  String  fileContent)  { 

       try  { 
           String  filePath  =  filePathAndName; 
           filePath  =  filePath.toString(); 
           File  myFilePath  =  new  File(filePath); 
           if  (!myFilePath.exists())  { 
               myFilePath.createNewFile(); 
           } 
           FileWriter  resultFile  =  new  FileWriter(myFilePath); 
           PrintWriter  myFile  =  new  PrintWriter(resultFile); 
           String  strContent  =  fileContent; 
           myFile.println(strContent); 
           resultFile.close(); 

       } 
       catch  (Exception  e)  { 
           System.out.println("新建目录操作出错"); 
           e.printStackTrace(); 

       } 

   } 

   /** 
     *  删除文件 
     *  @param  filePathAndName  String  文件路径及名称  如c:/fqf.txt 
     *  @param  fileContent  String 
     *  @return  boolean 
     */ 
   public  void  delFile(String  filePathAndName)  { 
       try  { 
           String  filePath  =  filePathAndName; 
           filePath  =  filePath.toString(); 
           java.io.File  myDelFile  =  new  java.io.File(filePath); 
           myDelFile.delete(); 

       } 
       catch  (Exception  e)  { 
           System.out.println("删除文件操作出错"); 
           e.printStackTrace(); 

       } 

   } 

   /** 
     *  删除文件夹 
     *  @param  filePathAndName  String  文件夹路径及名称  如c:/fqf 
     *  @param  fileContent  String 
     *  @return  boolean 
     */ 
   public  void  delFolder(String  folderPath)  { 
       try  { 
           delAllFile(folderPath);  //删除完里面所有内容 
           String  filePath  =  folderPath; 
           filePath  =  filePath.toString(); 
           java.io.File  myFilePath  =  new  java.io.File(filePath); 
           myFilePath.delete();  //删除空文件夹 

       } 
       catch  (Exception  e)  { 
           System.out.println("删除文件夹操作出错"); 
           e.printStackTrace(); 

       } 

   } 

   /** 
     *  删除文件夹里面的所有文件 
     *  @param  path  String  文件夹路径  如  c:/fqf 
     */ 
   public  void  delAllFile(String  path)  { 
       File  file  =  new  File(path); 
       if  (!file.exists())  { 
           return; 
       } 
       if  (!file.isDirectory())  { 
           return; 
       } 
       String[]  tempList  =  file.list(); 
       File  temp  =  null; 
       for  (int  i  =  0;  i  <  tempList.length;  i++)  { 
           if  (path.endsWith(File.separator))  { 
               temp  =  new  File(path  +  tempList[i]); 
           } 
           else  { 
               temp  =  new  File(path  +  File.separator  +  tempList[i]); 
           } 
           if  (temp.isFile())  { 
               temp.delete(); 
           } 
           if  (temp.isDirectory())  { 
               delAllFile(path+"/"+  tempList[i]);//先删除文件夹里面的文件 
               delFolder(path+"/"+  tempList[i]);//再删除空文件夹 
           } 
       } 
   } 

   /** 
     *  复制单个文件 
     *  @param  oldPath  String  原文件路径  如:c:/fqf.txt 
     *  @param  newPath  String  复制后路径  如:f:/fqf.txt 
     *  @return  boolean 
     */ 
   public  void  copyFile(String  oldPath,  String  newPath)  { 
       try  { 
           int  bytesum  =  0; 
           int  byteread  =  0; 
           File  oldfile  =  new  File(oldPath); 
           if  (oldfile.exists())  {  //文件存在时 
               InputStream  inStream  =  new  FileInputStream(oldPath);  //读入原文件 
               FileOutputStream  fs  =  new  FileOutputStream(newPath); 
               byte[]  buffer  =  new  byte[1444]; 
               int  length; 
               while  (  (byteread  =  inStream.read(buffer))  !=  -1)  { 
                   bytesum  +=  byteread;  //字节数  文件大小 
                   System.out.println(bytesum); 
                   fs.write(buffer,  0,  byteread); 
               } 
               inStream.close(); 
           } 
       } 
       catch  (Exception  e)  { 
           System.out.println("复制单个文件操作出错"); 
           e.printStackTrace(); 

       } 

   } 

   /** 
     *  复制整个文件夹内容 
     *  @param  oldPath  String  原文件路径  如:c:/fqf 
     *  @param  newPath  String  复制后路径  如:f:/fqf/ff 
     *  @return  boolean 
     */ 
   public  void  copyFolder(String  oldPath,  String  newPath)  { 

       try  { 
           (new  File(newPath)).mkdirs();  //如果文件夹不存在  则建立新文件夹 
           File  a=new  File(oldPath); 
           String[]  file=a.list(); 
           File  temp=null; 
           for  (int  i  =  0;  i  <  file.length;  i++)  { 
               if(oldPath.endsWith(File.separator)){ 
                   temp=new  File(oldPath+file[i]); 
               } 
               else{ 
                   temp=new  File(oldPath+File.separator+file[i]); 
               } 

               if(temp.isFile()){ 
                   FileInputStream  input  =  new  FileInputStream(temp); 
                   FileOutputStream  output  =  new  FileOutputStream(newPath  +  "/"  + 
                           (temp.getName()).toString()); 
                   byte[]  b  =  new  byte[1024  *  5]; 
                   int  len; 
                   while  (  (len  =  input.read(b))  !=  -1)  { 
                       output.write(b,  0,  len); 
                   } 
                   output.flush(); 
                   output.close(); 
                   input.close(); 
               } 
               if(temp.isDirectory()){//如果是子文件夹 
                   copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]); 
               } 
           } 
       } 
       catch  (Exception  e)  { 
           System.out.println("复制整个文件夹内容操作出错"); 
           e.printStackTrace(); 

       } 

   } 

   /** 
     *  移动文件到指定目录 
     *  @param  oldPath  String  如:c:/fqf.txt 
     *  @param  newPath  String  如:d:/fqf.txt 
     */ 
   public  void  moveFile(String  oldPath,  String  newPath)  { 
       copyFile(oldPath,  newPath); 
       delFile(oldPath); 

   } 

   /** 
     *  移动文件到指定目录 
     *  @param  oldPath  String  如:c:/fqf.txt 
     *  @param  newPath  String  如:d:/fqf.txt 
     */ 
   public  void  moveFolder(String  oldPath,  String  newPath)  { 
       copyFolder(oldPath,  newPath); 
       delFolder(oldPath); 

   } 
}

==================华丽的分割线==============================
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

/**
*
* <p>
* Title: 文件处理工具类
* </p>
* <p>
* Description:实现文件的简单处理,复制文件、目录等
* </p>
* <p>
* Copyright: Copyright (c) 2005
* </p>
* <p>
* Company: www.easyjf.com
* </p>
*
* @author 天一
* @version 1.0
*/
public class FileUtil {

/**
* 复制目录下的文件(不包括该目录)到指定目录,会连同子目录一起复制过去。
*
* @param targetFile
* @param path
*/
public static void copyFileFromDir(String targetDir, String path) {
File file = new File(path);
createFile(targetDir, false);
if (file.isDirectory()) {
copyFileToDir(targetDir, listFile(file));
}
}

/**
* 复制目录下的文件(不包含该目录和子目录,只复制目录下的文件)到指定目录。
*
* @param targetDir
* @param path
*/
public static void copyFileOnly(String targetDir, String path) {
File file = new File(path);
File targetFile = new File(targetDir);
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File subFile : files) {
if (subFile.isFile()) {
copyFile(targetFile, subFile);
}
}
}
}

/**
* 复制目录到指定目录。targetDir是目标目录,path是源目录。
* 该方法会将path以及path下的文件和子目录全部复制到目标目录
*
* @param targetDir
* @param path
*/
public static void copyDir(String targetDir, String path) {
File targetFile = new File(targetDir);
createFile(targetFile, false);
File file = new File(path);
if (targetFile.isDirectory() && file.isDirectory()) {
copyFileToDir(targetFile.getAbsolutePath() + "/" + file.getName(),
listFile(file));
}
}

/**
* 复制一组文件到指定目录。targetDir是目标目录,filePath是需要复制的文件路径
*
* @param targetDir
* @param filePath
*/
public static void copyFileToDir(String targetDir, String... filePath) {
if (targetDir == null || "".equals(targetDir)) {
System.out.println("参数错误,目标路径不能为空");
return;
}
File targetFile = new File(targetDir);
if (!targetFile.exists()) {
targetFile.mkdir();
} else {
if (!targetFile.isDirectory()) {
System.out.println("参数错误,目标路径指向的不是一个目录!");
return;
}
}
for (String path : filePath) {
File file = new File(path);
if (file.isDirectory()) {
copyFileToDir(targetDir + "/" + file.getName(), listFile(file));
} else {
copyFileToDir(targetDir, file, "");
}
}
}

/**
* 复制文件到指定目录。targetDir是目标目录,file是源文件名,newName是重命名的名字。
*
* @param targetFile
* @param file
* @param newName
*/
public static void copyFileToDir(String targetDir, File file, String newName) {
String newFile = "";
if (newName != null && !"".equals(newName)) {
newFile = targetDir + "/" + newName;
} else {
newFile = targetDir + "/" + file.getName();
}
File tFile = new File(newFile);
copyFile(tFile, file);
}

/**
* 复制文件。targetFile为目标文件,file为源文件
*
* @param targetFile
* @param file
*/
public static void copyFile(File targetFile, File file) {
if (targetFile.exists()) {
System.out.println("文件" + targetFile.getAbsolutePath()
+ "已经存在,跳过该文件!");
return;
} else {
createFile(targetFile, true);
}
System.out.println("复制文件" + file.getAbsolutePath() + "到"
+ targetFile.getAbsolutePath());
try {
InputStream is = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(targetFile);
byte[] buffer = new byte[1024];
while (is.read(buffer) != -1) {
fos.write(buffer);
}
is.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public static String[] listFile(File dir) {
String absolutPath = dir.getAbsolutePath();
String[] paths = dir.list();
String[] files = new String[paths.length];
for (int i = 0; i < paths.length; i++) {
files[i] = absolutPath + "/" + paths[i];
}
return files;
}

public static void createFile(String path, boolean isFile){
createFile(new File(path), isFile);
}

public static void createFile(File file, boolean isFile) {
if (!file.exists()) {
if (!file.getParentFile().exists()) {
createFile(file.getParentFile(), false);
} else {
if (isFile) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
} else {
file.mkdir();
}
}
}
}

}

分享到:
评论

相关推荐

    java File文件处理工具类

    Java中的`File`类是Java I/O流体系中不可或缺的一部分,它是用来操作文件和目录的基础类。`File`对象代表了文件和目录路径名的抽象表示。在这个详细的讲解中,我们将深入探讨`File`类的各种功能,包括创建、读取、...

    优雅的操作文件:java.nio.file 库介绍.pdf

    【java.nio.file库详解】 Java 早期版本的文件I/O操作功能相对有限,存在几个显著问题:不支持现代文件系统特性、API设计复杂且冗长、处理大文件和并发性能不足。为了解决这些问题,Java引入了`java.nio.file`库,...

    Java对IO类File的操作

    - `CopyTextFile.java`: 显示了如何复制文本文件,可能使用了`FileInputStream`和`FileOutputStream`,或者使用了`Files.copy()`方法,这是Java NIO中的文件复制功能。 以上是对`java.io.File`类的简单介绍和应用...

    JavaFile文件操作

    在Java编程语言中,`java.io.File`类是文件和目录路径名的抽象表示形式。这个类提供了大量的方法,使得开发者能够对操作系统中的文件和目录进行各种操作,如创建、读取、写入、删除以及获取文件属性等。在本项目中,...

    Java调用Ant API用法收集

    copy.setFile(new java.io.File("d:\\temp\\f1.txt")); // 设置目标目录路径 copy.setTodir(new java.io.File("d:\\temp\\dir1")); // 执行copy任务 copy.execute(); } } ``` #### 五、移动文件 与复制...

    java_javasecore1_file

    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("largefile_copy.txt")); int data; while ((data = bis.read()) != -1) { bos.write(data); } bis.close(); bos.close(); ``` ### ...

    java开发,图片重命名

    这里使用了Java 7引入的`java.nio.file.Files.copy()`方法进行文件复制,`StandardCopyOption.REPLACE_EXISTING`选项确保如果目标文件已存在,会被新的文件覆盖。 在实际项目中,如果需要对多个图片进行批量重命名...

    Java 图片压缩

    `moveImage`方法使用了`File.renameTo`来移动文件,注意这在同一分区内的操作有效,跨分区可能需要使用`Files.copy`和`Files.delete`方法。 总结,Java通过`java.awt.image`和`javax.imageio`包提供了强大的图片...

    java中文件操作大全

    Java提供`java.nio.file.Files`类中的`copy()`方法来复制文件。需要指定源文件、目标文件及复制选项。 ```java import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java....

    java 文件管理集合

    `java.nio.file.Files` 类提供了很多静态方法用于执行文件操作,如 `Files.copy()`, `Files.delete()`, `Files.readAllBytes()` 等。 7. **Path**:`java.nio.file.Path` 表示文件系统的路径,提供了创建、解析、...

    java_io.rar_java 文件操作_java 读取 本地文件_java.io转动_文件操作

    删除文件是通过`File`类的`delete()`方法完成的,但请注意,如果文件不存在或由于其他原因无法删除,该方法可能会失败: ```java import java.io.File; public class FileDeleteExample { public static void ...

    java的各种io操作

    在Java中,我们使用`java.io.File`类来代表文件或目录。`File`类提供了`mkdir()`方法用于创建单级目录,如果需要创建多级目录,可以使用`mkdirs()`。例如: ```java File myFilePath = new File("C:\\测试\\"); ...

    Java目录,文件操作

    Java中的`File`类提供了创建目录的方法。通过调用`mkdir()`或`mkdirs()`方法,可以创建单级或多级目录。`mkdir()`只创建当前目录,如果需要创建多级目录(例如,如果路径中包含子目录),则应使用`mkdirs()`。 ``...

    java file操作

    例如,`Files.createFile()`、`Files.copy()`和`Files.delete()`等。 9. **异步文件操作**: 在Java 7及以上版本,`java.nio.channels.AsynchronousFileChannel`允许异步读写文件,这对于处理大文件或并发操作尤其...

    java对文件的复制和删除(文件夹、文件)

    在这个场景中,我们看到一个名为"OperateFile"的压缩包文件,它很可能包含了一个Java类或者一个项目,用于演示如何使用Java来执行这些操作。下面将详细讨论Java中文件复制和删除的关键知识点,以及可能用到的相关API...

    java 模拟windows文件操作

    - Java 7引入了`java.nio.file`包,其中`Files`类提供了异步的文件操作方法,如`Files.copy()`, `Files.move()`等。 10. **文件监控** - Java 7开始支持文件系统事件监控,通过`java.nio.file.FileSystemWatcher`...

    Java 文件 操作

    总结,Java文件操作涉及众多API和技巧,如`File`类的方法,以及`java.nio.file`包中的工具。正确理解和使用这些功能对于任何Java开发者来说都是至关重要的,无论是在日常开发还是在解决特定问题时。在进行文件操作时...

    【Java基础】-- FileUtils工具类常用方法(csdn)————程序.pdf

    File srcFile = new File("E:\\java\\file01\\abc 雪.jpg"); String destFilePath = "E:\\java\\file02"; String destFileName = "abc 雪 02.jpg"; try { FileUtils.copyFile(srcFile, new File(destFilePath, ...

    java文件操作总结

    file.delete(); // 删除文件 file.renameTo(new File("new_example.txt")); // 重命名文件 ``` 2. **流的概念**:Java中的输入/输出流(InputStream/OutputStream)用于处理数据的读写。例如,`FileInputStream`和`...

Global site tag (gtag.js) - Google Analytics