`
tianyafy
  • 浏览: 9301 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java 文件操作工具

阅读更多
package com.test.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
* IO工具
*
*/
public class IOUtil {

/**
* 新建文件
*
* @param path
*            文件所在路径
* @param filename
*            文件名
* @param overWrite
*            是否强制覆盖
* @return 文件全路径
* @throws IOException
*/
public static String createFile(String path, String filename,
boolean overWrite) throws IOException {
File file = new File(path, filename);
if (file.exists()) {
try {
if (file.isDirectory()) {
throw new Exception("创建的文件和已有目录重名");
}
} catch (Exception e) {
return null;
}
if (overWrite) {
file.delete();
file.createNewFile();
}
} else {
file.createNewFile();
}
return file.getPath();
}

/**
* 新建目录
*
* @param path
*            目录所在路径
* @param dirName
*            目录名
* @return 目录全路径
*/
public static String createDir(String path, String dirName) {
File dir = new File(path, dirName);
if (dir.exists()) {
try {
if (dir.isFile()) {
throw new Exception("创建的目录和已有文件重名");
}
} catch (Exception e) {
return null;
}
} else {
dir.mkdirs();
}
return dir.getPath();
}

/**
* 拷贝
*
* @param src
*            源文件(文件夹)
* @param dest
*            目标文件夹
* @param overWrite
*            强制覆盖
* @return 未拷贝文件名
* @throws IOException
*/
public static String copy(String src, String dest, boolean overWrite)
throws IOException {
File srcFile = new File(src);
File destFile = new File(dest);
StringBuffer unCopyFiles = new StringBuffer();
if (!destFile.exists() || destFile.isFile()) {
throw new IOException("目标路径不是一个有效路径");
}
if (srcFile.isFile()) {
try {
copyFile(srcFile, dest, overWrite);
} catch (Exception e) {
unCopyFiles.append(srcFile.getPath());
unCopyFiles.append(";");
}
} else {
try {
dest = copyDir(srcFile, dest);
} catch (Exception e) {
unCopyFiles.append(srcFile.getPath());
unCopyFiles.append(";");
}
File[] files = srcFile.listFiles();
for (int i = 0; i < files.length; i++) {
String temp = copy(files[i].getPath(), dest, overWrite);
if (temp != null && !temp.isEmpty()) {
unCopyFiles.append(temp);
unCopyFiles.append(";");
}
}
}
return unCopyFiles.toString();
}

/**
* 剪切
*
* @param src
*            源文件(文件夹)
* @param dest
*            目标文件夹
* @param overWrite
*            强制覆盖
* @return 未剪切文件
* @throws IOException
*/
public static String cut(String src, String dest, boolean overWrite)
throws IOException {
File srcFile = new File(src);
File destFile = new File(dest);
String unCutaFiles = null;
if (!destFile.exists() || destFile.isFile()) {
throw new IOException("目标路径不是一个有效路径");
}
if (srcFile.isFile()) {
try {
copyFile(srcFile, dest, overWrite);
srcFile.delete();
} catch (Exception e) {
unCutaFiles += srcFile.getPath() + ";";
}
} else {
try {
dest = copyDir(srcFile, dest);

} catch (Exception e) {
unCutaFiles += srcFile.getPath() + ";";
}
File[] files = srcFile.listFiles();
for (int i = 0; i < files.length; i++) {
String temp = cut(files[i].getPath(), dest, overWrite);
if (temp != null) {
unCutaFiles += temp + ";";
}
files[i].delete();
}
srcFile.delete();
}
return unCutaFiles;
}

/**
* 删除
*
* @param path
*            文件(文件夹)全路径
*/
public static void delete(String path) {
File file = new File(path);
if (file.exists()) {
if (file.isDirectory()) {
File[] tmp = file.listFiles();
for (int i = 0; i < tmp.length; i++) {
delete(tmp[i].getPath());
}
file.delete();
} else {
file.delete();
}

}
}

/**
* 读取文件内容
*
* @param path
*            文件名
* @return 文件内容字符串
* @throws IOException
*/
public static String read(String path) throws IOException {
File file = new File(path);
if (!file.exists() || file.isDirectory())
throw new FileNotFoundException();
FileInputStream fis = new FileInputStream(file);
byte[] buf = new byte[1024];
StringBuffer sb = new StringBuffer();
while ((fis.read(buf)) != -1) {
sb.append(new String(buf));
buf = new byte[1024];// 重新生成,避免和上次读取的数据重复
}
return sb.toString();
}

/**
* 把内容写入文件
*
* @param path
*            文件名
* @param sb
*            写入内容
* @param encoding
*            编码方式(默认为UTF-8)
* @throws IOException
*/
public static void write(String path, StringBuffer sb, String encoding)
throws IOException {
if (sb == null || sb.length() < 1)
return;
File file = new File(path);
if (encoding == null)
encoding = "utf-8";
if (file.exists()) {
FileOutputStream out = new FileOutputStream(file, true);
byte[] bytes = sb.toString().getBytes(encoding);
out.write(bytes);
out.close();
} else {
throw new FileNotFoundException();
}
}

private static void copyFile(File srcFile, String dest, boolean overWrite)
throws Exception {

String fileName = srcFile.getName();
File file = new File(dest, fileName);

if (file.exists()) {
if (file.isDirectory()) {
throw new Exception("拷贝的文件和已有目录重名");
}
if (overWrite) {
file.delete();
file.createNewFile();
}
} else {
file.createNewFile();
}
FileInputStream in = new FileInputStream(srcFile);
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]);
}
in.close();
out.close();

}

private static String copyDir(File srcDir, String dest) throws Exception {
String dirName = srcDir.getName();
File file = new File(dest, dirName);
if (file.exists()) {
if (file.isFile()) {
throw new Exception("拷贝的目录和已有文件重名");
}
} else {
file.mkdirs();
}
return file.getPath();
}

}
分享到:
评论

相关推荐

    java文件操作工具类

    java文件操作工具类是java中针对文件操作的一个工具类,可以方便的读取,下载,上传文件等操作,希望可以帮到大家。

    java 文件操作工具类

    java 文件操作工具类

    java文件操作工具类分享(file文件工具类)

    Java 文件操作工具类分享 Java 文件操作工具类是 Java 语言中一个基本的文件操作类库,提供了多种文件操作方法,包括文件保存、文件读取、文件夹创建、文件删除等。以下是该工具类的主要知识点: 1. 文件保存方法...

    java实用的io文件操作工具类,集成各种对文件操作的方法

    集成创建文件,创建目录,删除单个文件,删除单个目录,删除文件夹里内容,复制文件,复制文件夹,剪切文件,剪切文件夹等操作方法. 特上传分享

    Java文件操作工具类fileUtil实例【文件增删改,复制等】

    Java文件操作工具类fileUtil实例 Java文件操作工具类fileUtil实例是一个提供了多种文件操作方法的工具类,包括文件读取、增加、删除、修改、复制等操作。该工具类可以帮助开发者快速实现文件操作功能,提高开发效率...

    java操作文件工具类

    文件工具类java操作文件工具类java操作文件工具类java操作文件工具类java操作文件工具类

    java实现对文件的各种操作的工具类.md

    # java实现对文件的各种操作的工具类 ## 可以实现的操作有: 1. 删除单个文件 2. 删除文件夹及文件夹下的文件 3. 使用文件流对单个文件进行复制 4. 复制整个文件夹内容(包含子文件夹中的所有内容) 5. ...

    java properties文件操作工具类,可追加修改

    此工具类只用于Java后端在操作Properties文件的时候写的工具类,方便properties文件的存取操作

    java反编译工具(.class文件反编译成.java文件)

    标签再次强调了这是一个用于将.class文件反编译为.java文件的工具,这表明其主要功能和适用场景。 在压缩包子文件的文件名称列表中,我们看到了"jd-gui-0-2"。这很可能是反编译工具的名字,例如JAD GUI的一个版本号...

    完整的java文件读写工具类

    本篇将详细讲解标题为"完整的java文件读写工具类"所涉及的核心知识点,以及如何实现描述中提到的文件与目录管理功能。 1. **Java IO基础**: Java IO是Java标准库中的核心部分,提供了处理输入/输出流的类。在`...

    Java文件对比工具

    3. WinMerge:这是一款开源的文件和目录对比工具,适用于Windows平台,操作简单直观,同样可以很好地处理Java文件的对比。 五、应用场景 1. 版本控制:在Git等版本控制系统中,提交前进行文件对比,可避免无意的...

    java 中 zip压缩文件解压工具类

    本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...

    java文件传输工具

    Java文件传输工具是一种基于Java开发的应用程序,设计用于实现基本的点对点(P2P)文件传输功能。这个工具提供了简单易用的界面,让用户能够方便地在两台计算机之间共享和移动文件。以下是对该工具核心特性和技术...

    Java反编译工具把.class文件转换为.java文件

    ### Java反编译工具:将.class文件转换为.java文件 #### 概述 在软件开发领域,有时我们可能需要分析第三方库或者开源项目的内部结构,这时就需要借助于反编译工具来帮助我们阅读和理解其源码。Java作为一种广泛...

    JAVA文件传输工具

    【JAVA文件传输工具】是一个由个人开发者编写的实用程序,主要功能是实现文件的高效、安全传输,尤其擅长处理大文件。此工具基于Java编程语言,因此具备跨平台特性,可以在多种操作系统上运行,如Windows、Linux和...

    java文件操作的工具类

    此文档为java中操作File对象的一个通用工具类,包含了byte数组和File类的相互转换

    java文件上传下载工具类

    总结起来,"java文件上传下载工具类"是Java Web开发中不可或缺的部分,它封装了与文件操作相关的复杂逻辑,使开发者能够更专注于业务逻辑。通过创建这样的工具类,可以提高代码的可复用性和可维护性,同时降低出错的...

    java csv文件读取工具类

    一个非常好用的csv文件操作工具

Global site tag (gtag.js) - Google Analytics