File的基本实用操作

原创 2007年09月14日 11:45:00

常用的文件操作,包括目录,文件的创建,删除和修改等功能.

File的API连接:http://www.leftworld.net/online/j2sedoc/javaref/java.io.file_dsc.htm

源代码如下:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class FileUtils {

 /**
  * 创建目录
  *
  * @param folderPath:目录路径
  * @return
  * @throws IOException
  */
 public static boolean createDirectory(String directoryPath)
   throws IOException {
  boolean result = false;
  File f = new File(directoryPath);
  if (!f.exists()) {
   result = f.mkdirs();
  } else {
   throw new IOException("the file " + f.getName() + " exited");
  }

  return result;
 }

 /**
  * 删除目录下所有文件
  *
  * @param directory
  *            (File 对象)
  */
 public static void deleteDirectory(String directoryPath) {
  File directory = new File(directoryPath);
  File[] entries = directory.listFiles();
  for (int i = 0; i < entries.length; i++) {
   if (entries[i].isDirectory()) {
    deleteDirectory(entries[i].getPath());
    entries[i].delete();
   } else {
    entries[i].delete();
   }
  }

 }

 /**
  * 创建文件
  *
  * @param filepath:文件所在目录路径,比如:c:/test/test.txt
  * @return
  */
 public static boolean createFile(String filepath) throws IOException {
  boolean result = false;
  File file = new File(filepath);
  result = file.createNewFile();
  file = null;
  return result;
 }

 /**
  * 删除目录下所有文件
  *
  * @param directory
  *            (File 对象)
  */
 public static void deleteFiles(File directory) {
  File[] entries = directory.listFiles();
  for (int i = 0; i < entries.length; i++) {
   entries[i].delete();
  }

 }

 /**
  * 删除文件
  *
  * @param filepath:文件所在物理路径
  * @return
  */
 public static boolean isDel(String filepath) {
  boolean result = false;
  File file = new File(filepath);
  result = file.delete();
  file = null;
  return result;
 }

 /**
  * 文件重命名
  *
  * @param filepath:文件所在物理路径
  * @param destname:新文件名
  * @return
  */
 public static boolean renamefile(String filepath, String destname) {
  boolean result = false;
  File f = new File(filepath);
  String fileParent = f.getParent();
  String filename = f.getName();
  File rf = new File(fileParent + "//" + destname);
  if (f.renameTo(rf)) {
   result = true;
  }
  f = null;
  rf = null;
  return result;
 }

 public static void copy(String srcfilepath, String destfilepath)
   throws IOException {

  copy(new File(srcfilepath), new File(destfilepath));

 }

 /**
  * 复制文件f1至f2
  *
  * @param f1
  *            源文件
  * @param f2
  *            目标文件
  * @throws IOException
  */
 public static void copy(File f1, File f2) throws IOException {
  // 创建文件输入输出流对象
  FileInputStream is = new FileInputStream(f1);
  FileOutputStream os = new FileOutputStream(f2);
  // 设定读取的字节数
  int count, n = 512;
  byte buffer[] = new byte[n];
  // 读取输入流
  count = is.read(buffer, 0, n);
  while (count != -1) {
   os.write(buffer, 0, count);
   count = is.read(buffer, 0, n);
  }
  // 关闭输入输出流
  is.close();
  os.close();
 }

 public boolean copyDirectory(String SrcDirectoryPath,
   String DesDirectoryPath) {

  try {
   // 创建的目录不存在
   File F0 = new File(DesDirectoryPath);
   if (!F0.exists()) {
    if (!F0.mkdir()) {
     System.out.println("创建的目录不存在!");
    }
   }
   File F = new File(SrcDirectoryPath);
   File[] files = F.listFiles(); //

   String srcName = "";
   String desName = "";
   int currentFile = 0;
   // 这个拷贝
   for (currentFile = 0; currentFile < files.length; currentFile++) {
    if (!files[currentFile].isDirectory()) {
     // 是文件,则直接拷贝
     srcName = files[currentFile].toString();
     desName = DesDirectoryPath + "//"
       + files[currentFile].getName();

     copy(srcName, desName);
    }
    // 文件夹
    else {
     //
     if (copyDirectory(files[currentFile].getPath().toString(),
       DesDirectoryPath + "//"
         + files[currentFile].getName().toString())) {

     } else {
      System.out.println("SubDirectory Copy Error!");
     }
    }
   }
   return true;
  } catch (Exception e) {
   e.printStackTrace();
   return false;
  }
 }

 /**
  * 取得文件或文件夹信息:路径、修改时间
  *
  * @param file
  * @throws IOException
  * @throws IOException
  */
 public static void getInfo(String filepath) throws IOException {
  getInfo(new File(filepath));
 }

 public static void getInfo(File file) throws IOException {
  // 初始化时间格式
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  if (file.isFile())
   // 返回抽象路径名的绝对路径、文件长度、最后修改时间
   System.out.println("<FILE>/t" + file.getAbsolutePath() + "/t"
     + sdf.format(new Date(file.lastModified())));
  else {
   System.out.println("/t" + file.getAbsolutePath());
   File[] files = file.listFiles();
   for (int i = 0; i < files.length; i++)
    getInfo(files[i]);
  }
 }

 public static void renameFile(String filepath, String token, String value) {
  renameFile(new File(filepath), token, value);
 }

 public static void renameFile(File file, String token, String value) {

  int count = 0;
  String oldName = file.getName();
  if (oldName.indexOf(token) == -1)
   return;
  count++;
  String oldPath = file.getAbsolutePath();
  String newName = file.getName().replaceAll(token, value);
  String newPath = oldPath.replaceAll(oldName, newName);
  File newfile = new File(newPath);
  try {
   file.createNewFile();
  } catch (IOException e) {
   e.printStackTrace();
  }
  file.renameTo(newfile);
  // log.debug((new StringBuilder()).append("the return value of rename
  // operation is ").append().toString());
 }

 public static void renameAll(String dirpath, String token, String value) {
  File path = new File(dirpath);
  List dirs = new ArrayList();
  dirs.add(path);
  File files[] = null;
  for (; dirs.size() != 0; dirs.remove(0)) {
   File dir = dirs.get(0) != null ? (File) dirs.get(0) : null;
   files = dir.listFiles();
   for (int i = 0; i < files.length; i++)
    if (files[i].isDirectory())
     dirs.add(files[i]);
    else
     renameFile(files[i], token, value);

  }

 }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

《实用OpenCV》<四> 图像和GUI窗口的基本操作(3)

ROI:从图像裁剪矩形区域 图像的兴趣区 兴趣区其实就如字面意思一样,是我们对图像特别感兴趣和愿意处理的一块区域。比如图片很大,大部分区域都不是我们想要用的,或者处理过程如果基于...

《实用OpenCV》<四> 图像和GUI窗口的基本操作(4)

写入视频到硬盘 VideoWriter对象可以写入视频到硬盘。构造函数需要以下参数: • 输出文件名 • 输出文件编码解码器。接下来的代码里, 我们使用常见的...

win7系统SQLServer2008 基本操作和sqlcmd 实用语法

01 连接数据库 Win7下,先打开SQLServer管理工具(开始菜单/所有程序/Microsoft sql server 2008/sql server Management Studi...
  • SYP35
  • SYP35
  • 2016-02-01 23:38
  • 379

java File类的基本操作

java File类文件基本操作

File基本操作

File基本操作 构造方法摘要 File(File parent, String child)            根据 p...

java File的基本操作实例

import java.io.*; public class FileOperate { public FileOperate() { } /** * 新建目录 ...

操作File文件的一些基本打包函数

操作文件时的基本打包函数

git基本操作的一些实用笔记

我也是git新手,参考了以下部分文章,这里简单地整理一下撤销改动部分,因为这部分要谨慎一下。 GIT使用教程与基本原理 http://blog.csdn.net/wengpingbo/article...

Java中File的基本操作

package com.file.sample; import java.io.*; public class FileOperate { public FileOperate() { ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)