`
hn_archer
  • 浏览: 132981 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

FileUtil

 
阅读更多

 

package org.archer.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class FileUtil {
  /**
   * 创建文件夹
   * 
   * @param path:目录
   */
  public void createDir(String path) {
    File dir = new File(path);
    if (!dir.exists()) {
      dir.mkdir();
      System.out.println("创建文件夹成功!");
    }
  }

  /**
   * 递归删除文件夹 要利用File类的delete()方法删除目录时, 必须保证该目录下没有文件或者子目录,否则删除失败,
   * 因此在实际应用中,我们要删除目录, 必须利用递归删除该目录下的所有子目录和文件, 然后再删除该目录。
   * 
   * @param path
   */
  public void delDir(String path) {
    File dir = new File(path);
    if (dir.exists()) {
      File[] tmp = dir.listFiles();
      for (int i = 0; i < tmp.length; i++) {
        if (tmp[i].isDirectory()) {
          delDir(path + "/" + tmp[i].getName());
        } else {
          tmp[i].delete();
        }
      }
      dir.delete();
    }
  }

  /*
   * 转移文件目录不等同于复制文件,复制文件是复制后两个目录都存在该文件, 而转移文件目录则是转移后,只有新目录中存在该文件
   */
  /**
   * 转移文件目录
   * 
   * @param filename:文件名
   * @param oldpath:旧目录
   * @param newpath:新目录
   * @param cover:若新目录下存在和转移文件具有相同文件名的文件时, 是否覆盖新目录下文件, cover=true将会覆盖原文件,否则不操作
   */
  public void changeDirectory(String filename, String oldpath, String newpath,
      boolean cover) {
    if (!oldpath.equals(newpath)) {
      File oldfile = new File(oldpath + "/" + filename);
      File newfile = new File(newpath + "/" + filename);
      if (newfile.exists()) {// 若在待转移目录下,已经存在待转移文件
        if (cover)// 覆盖
          oldfile.renameTo(newfile);
        else
          System.out.println("在新目录下已经存在:" + filename);
      } else {
        oldfile.renameTo(newfile);
      }
    }
  }

  /**
   * 创建新文件
   * 
   * @param path 目录
   * @param filename 文件名
   * @throws IOException
   */
  public void createFile(String path, String filename) throws IOException {
    File file = new File(path + "/" + filename);
    if (!file.exists()) {
      file.createNewFile();
      System.out.println("创建文件成功!");
    }
  }

  /*
   * 利用BufferedWriter写入文件内容
   * 
   * 利用Buffer操作IO速度会稍微快一点
   */
  public void writeFile(String filename) {
    File file = new File(filename);
    try {
      if (!file.exists())
        file.createNewFile();
      FileWriter fw = new FileWriter(file, true);// 传入true表示如果该文件存在,则将新内容添加到文件末尾
      BufferedWriter bw = new BufferedWriter(fw);
      for (int i = 0; i < 10; i++)
        bw.write("这是第" + (i + 1) + "行,应该没错哈 ");
      // 关闭
      bw.close();
      bw = null;
      fw.close();
      fw = null;
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  /**
   * 读文件 利用BufferedReader读取在IO操作,利用BufferedReader和BufferedWriter效率会更高一点
   * 
   * @param path
   * @return
   * @throws IOException
   */
  public String ReadFile(String path) throws IOException {
    File file = new File(path);
    if (!file.exists() || file.isDirectory())
      throw new FileNotFoundException();
    BufferedReader br = new BufferedReader(new FileReader(file));
    String temp = null;
    StringBuffer sb = new StringBuffer();
    temp = br.readLine();
    while (temp != null) {
      sb.append(temp + " ");
      temp = br.readLine();
    }
    return sb.toString();
  }

  /**
   * 文件重命名--如果重命名的目标文件已经存在,则不会进行任何操作
   * 
   * @param path 文件目录
   * @param oldname 原来的文件名
   * @param newname 新文件名
   */
  public void renameFile(String path, String oldname, String newname) {
    if (!oldname.equals(newname)) {// 新的文件名和以前文件名不同时,才有必要进行重命名
      File oldfile = new File(path + "/" + oldname);
      File newfile = new File(path + "/" + newname);
      if (newfile.exists())// 若在该目录下已经有一个文件和新文件名相同,则不允许重命名
        System.out.println(newname + "已经存在!");
      else {
        oldfile.renameTo(newfile);
      }
    }
  }

  /**
   * 以文件流的方式复制文件 支持中文处理,并且可以复制多种类型,比如txt,xml,jpg,doc等多种格式
   * 
   * @param src 文件源目录
   * @param dest 文件目的目录
   * @throws IOException
   */
  public void copyFile(String src, String dest) throws IOException {
    FileInputStream in = new FileInputStream(src);
    File file = new File(dest);
    if (!file.exists())
      file.createNewFile();
    FileOutputStream out = new FileOutputStream(file);
    int c;
    byte buffer[] = new byte[1024];
    while ((c = in.read(buffer)) != -1) {
      for (int i = 0; i < c; i++)
        out.write(buffer[i]);
    }
    System.out.println("文件拷贝完毕!");
    in.close();
    out.close();
  }

  /**
   * 删除文件
   * 
   * @param path 目录
   * @param filename 文件名
   */
  public void delFile(String path, String filename) {
    File file = new File(path + "/" + filename);
    if (file.exists() && file.isFile())
      file.delete();
  }

  public String readSysFile(String path, String charsetName1,
      String charsetName2) {
    BufferedReader br = null;
    StringBuffer sb = new StringBuffer();
    String str = "";
    try {
      InputStream is = new FileInputStream(FileUtil.class.getResource(path)
          .toString().substring(6));
      br = new BufferedReader(new InputStreamReader(is));
      String temp = null;
      temp = br.readLine();
      while (temp != null) {
        sb.append(temp + "\n");
        temp = br.readLine();
      }
      str = sb.toString();
      // System.out.println(sb.toString());
      if (charsetName1 != null && charsetName2 != null
          && charsetName1.trim().length() > 0
          && charsetName1.trim().length() > 0) {
        // str = new String(str.getBytes("GBK"),"UTF-8");
        str = new String(str.getBytes(charsetName1.trim()), charsetName2.trim());
      }
      is.close();
      br.close();
      sb.setLength(0);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return str;
  }

  public static void main(String[] arg) {

    String str;
    try {
      str = FileUtil.class.newInstance().readSysFile(
          "/com/jinqiao/tag/file/orgLinkage.pro", "", "");
      System.out.println(str);
    } catch (InstantiationException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

  }
}
分享到:
评论

相关推荐

    FileUtil(文件操作工具类)

    在Java编程中,`FileUtil`通常是一个自定义的工具类,用于封装常见的文件操作,以便在项目中方便地处理文件。这个类可以提供一系列静态方法,帮助开发者执行读写文件、创建、删除、移动、复制文件等任务,极大地提高...

    FileUtil类文件整理

    在Java编程语言中,`FileUtil`类通常是由开发者自定义的一个工具类,用于封装对文件和目录的操作,以提供更便捷、安全的文件处理功能。这个类可能会包含各种静态方法,用来创建、读取、写入、删除、移动、复制文件...

    Base64Util、FileUtil、GsonUtils、HttpUtil

    在给出的标题和描述中,我们涉及了四个关键的工具类:Base64Util、FileUtil、GsonUtils和HttpUtil。这些工具类分别用于Base64编码解码、文件操作、JSON数据处理以及HTTP请求。下面将详细介绍这四个工具类的主要功能...

    纯净的Exceptionbean和FileUtil可用于spring的案例

    在这个案例中,我们关注的是两个核心组件:`ExceptionBean`和`FileUtil`。这两个组件分别用于优雅地处理异常和简化文件操作。 首先,让我们深入理解`ExceptionBean`。在Java编程中,异常处理是必不可少的一部分。`...

    Java文件处理工具类--FileUtil

    * FileUtil. Simple file operation class. * * @author BeanSoft * */ public class FileUtil { /** * The buffer. */ protected static byte buf[] = new byte[1024]; /** * Read content from ...

    文件操作工具 FileUtil

    "FileUtil"是一个基于Qt框架的库,专门用于处理各种类型的文件,包括CSV、DBF、Excel、INI、JSON和XML等。下面将详细介绍这些文件格式以及如何使用Qt进行操作。 1. CSV(Comma Separated Values)文件: CSV是一种...

    ArrayUtil+DateUtil+FileUtil+ReguUtil+StringUtil

    这里提到的"ArrayUtil+DateUtil+FileUtil+ReguUtil+StringUtil"是五个这样的工具包,它们分别针对数组操作、日期处理、文件操作、正则表达式匹配和字符串操作提供了一系列便利的方法。 1. **ArrayUtil**: - **...

    关于文件操作的工具类 -- FileUtil

    public class FileUtil { /** * 新建目录 * @param folderPath String 如 c:/fqf * @return boolean */ public static void newFolder(String folderPath) { try { String filePath = folderPath; ...

    FileUtil.rar

    `FileUtil`工具类集合了多种文件操作功能,为开发者提供了一站式的解决方案。下面将详细介绍这个工具类中涉及的关键知识点。 首先,文件大小转换是一个常见的需求,特别是在处理大文件时。`FileUtil`可能包含了将...

    hadoop FileUtil.java 解决权限检查的问题

    org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689) 解决这个问题后,重新生成的jar包

    FileUtil.java

    在百度官方文档的FileUtil类做了修改,函数可以直接调用,包含URI绝对路径转换,存储权限获取,根据文件路径读取Bytes数组等

    fileutil.java

    fileutil.java有需要的自己下载。

    fileutil文件通用类

    通用文件方法,方发都很通用,在java中这些都是常用的

    Xenos.zip_"blackbone" 使用_FileUtil.cpp:452:_Xenos 注入 使用_dll注入_saf

    本文将深入探讨“Xenos.zip”这个压缩包中的核心内容——一个基于“Blackbone”库开发的DLL注入工具,以及相关的“FileUtil.cpp:452”代码段。我们将讨论DLL注入的基本原理,Blackbone库的功能,以及安全性方面的...

    fileutil工具类 处理文件流工具

    fileutil工具类 处理文件流工具 private static File file; /** * 判断文件是否存在 * * @param path * 文件路径 * @return boolean */ public static boolean fileIsExists(String path) { if (path ==...

Global site tag (gtag.js) - Google Analytics