package org.sg.sgg.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.UUID;
import org.apache.log4j.Logger;
public class FileUtils {
private final static Logger logger = Logger.getLogger(FileUtils.class);
/**
* 判断源文件是否存在且是否为文件
* @param sourceFile
* @return
*/
public static boolean isExistsSource(String sourceFile) {
File srcFile = new File(sourceFile);
if (!srcFile.exists()) {
logger.info("复制文件失败:源文件" + sourceFile + "不存在!");
return false;
} else if (!srcFile.isFile()) {
logger.info("复制文件失败:" + sourceFile + "不是一个文件!");
return false;
}
return true;
}
/**
* 判断目标文件所在目录是否存在
* @param targetFile
* @return
*/
public static boolean isExistsTargetDir(String targetFile) {
File destFile = new File(targetFile);
if (!destFile.getParentFile().exists()) {
// 如果目标文件所在的目录不存在,则创建目录
logger.info("目标文件所在的目录不存在:" + destFile.getParentFile());
//创建目录
//destFile.getParentFile().mkdirs();
return false;
}
return true;
}
/**
* 判断该文件是否存在
* @param fileName - 文件名称
* @param path - 目录
* @return - 是否存在
*/
public static boolean isFileExist(String fileName, String path){
File file = new File(getDoPath(path)+fileName);
return file.exists();
}
/**
* 复制单个文件
*
* @param srcFileName
* 待复制的文件名
* @param destFileName
* 目标文件名
* @return 如果复制成功,则返回true,否则返回false
*/
public static boolean copyFile(String srcFileName, String destFileName) {
//源文件是否存在
isExistsSource(srcFileName);
//目标文件所在目录是否存在
isExistsTargetDir(destFileName);
// 准备复制文件
int byteread = 0;// 读取的位数
InputStream in = null;
OutputStream out = null;
File srcFile = new File(srcFileName);
File destFile = new File(destFileName);
try {
// 打开原文件
in = new FileInputStream(srcFile);
// 打开连接到目标文件的输出流
out = new FileOutputStream(destFile);
byte[] buffer = new byte[1024];
// 一次读取1024个字节,当byteread为-1时表示文件已经读完
while ((byteread = in.read(buffer)) != -1) {
// 将读取的字节写入输出流
out.write(buffer, 0, byteread);
}
logger.info("复制文件" + srcFileName + "至" + destFileName + "成功!");
return true;
} catch (Exception e) {
logger.error("复制文件失败:" + e.getMessage());
return false;
} finally {
// 关闭输入输出流,注意先关闭输出流,再关闭输入流
if (out != null) {
try {
out.close();
} catch (IOException e) {
logger.error("复制文件关闭流时出错:" + e.getMessage());
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
logger.error("复制文件关闭流时出错:" + e.getMessage());
}
}
}
}
//==============================================================================
//
//删除文件夹
// 此为调用java基础类,利用递归实现方式
// 除此之外用apache io包FileUtils也很方便,以下为apache io包实现方式:
// org.apache.commons.io.FileUtils.deleteDirectory(f);//删除目录
// org.apache.tools.ant.util.FileUtils.delete(f);//删除文件
//
//==============================================================================
/**
* 删除文件夹:文件夹下的所有文件
* @param filepath 格式形如:d://1//2/3//4
* 即为删除4这个文件夹
* @return
*/
public static boolean removeFile(String filepath) {
try {
File f = new File(filepath);
if(f.exists() && f.isDirectory()) { //判断是文件还是目录
if(f.listFiles().length == 0) { //若目录下没有文件则直接删除
f.delete();
} else { //若有则把文件放进数组,并判断是否有下级目录
File childFile[]=f.listFiles();
int i = f.listFiles().length;
for(int j = 0; j < i; j++) {
if(childFile[j].isDirectory()) {
//递归调用del方法并取得子目录路径
removeFile(childFile[j].getAbsolutePath());
}
childFile[j].delete(); //删除文件
}
//删除文件夹下的子文件后再删除主文件夹
f.delete();
}
}
} catch (Exception e) {
e.printStackTrace();
logger.error("删除文件出错!");
return false;
}
return true;
}
/**
* 传递一个路径和文件名称,删除该文件
* @param fileName - 文件名称
* @param path - 路径
* @return - 是否删除成功
*/
public static boolean removeFile(String fileName, String path){
boolean flag = false;
if (isFileExist(fileName, path)) {
File file = new File(getDoPath(path)+fileName);
flag = file.delete();
}
return flag;
}
/**
* 删除当前文件
* @param file - 要删除的文件
* @return 是否删除成功
*/
public static boolean removeFile(File file){
boolean flag = false;
if (file != null && file.exists()) {
flag = file.delete();
}
return flag;
}
/**
* 传入一个文件名,得到这个文件名称的后缀 包含 .
* @param fileName - 文件名
* @return
*/
public static String getSuffixContainPoint(String fileName){
int index = fileName.lastIndexOf(".");
if (index != -1) {
String suffix = fileName.substring(index);//后缀
return suffix;
}else {
return null;
}
}
/**
* 传入一个文件名,得到这个文件名称的后缀 不包含 .
* @param fileName - 文件名
* @return
*/
public static String getSuffixUnContainPoint(String fileName){
int index = fileName.lastIndexOf(".");
if (index != -1) {
String suffix = fileName.substring(index + 1);//后缀
return suffix;
} else {
return null;
}
}
/**
* 利用uuid产生一个随机的name
* @param fileName 文件名
* @return
*/
public static String getRandomName(String fileName){
String randomName = UUID.randomUUID().toString();
//如果文件没有后缀名 默认就是给添加 后缀 txt
return getNewFileName(fileName, randomName , "txt");
}
/**
* 用当前日期、时间和1000以内的随机数组合成的文件名称
* @param fileName - 文件名
* @return
*/
public static String getNumberFileName(String fileName){
SimpleDateFormat format = new SimpleDateFormat("yyMMddhhmmss");
int rand = new Random().nextInt(1000);
String numberFileName = format.format(new Date()) + rand;
return getNewFileName(fileName, numberFileName, "txt");
}
/**
* 传递一个文件名称和一个新名称,组合成一个新的带后缀文件名
* 当传递的文件名没有后缀,会添加默认的后缀
* @param fileName - 文件名称
* @param newFileName - 新文件名称
* @param nullSuffix - 为没有后缀的文件所添加的后缀 如果没有 可传递一个默认的后缀名 eq .txt
* @return
*/
public static String getNewFileName(String fileName,String newFileName,String nullSuffix){
String suffix = getSuffixContainPoint(fileName);
if (suffix != null) {
newFileName += suffix;
}else {
newFileName = newFileName.concat(".").concat(nullSuffix);
}
return newFileName;
}
/**
*
* @param pathName
* @return
*/
public static boolean isBlankForPath(String pathName) {
boolean flag = false;
String[] letters = new String[] { "/", "\\", ":", "*", "?", "\"", " <",
">", " ¦", "%20", "#", "$", "%" };
for (int i = 0; i < letters.length; i++) {
if (pathName.indexOf(letters[i]) != -1) {
flag = true;
} else {
flag = false;
}
}
return flag;
}
/**
* 处理后的系统文件路径
* @param path
* @return
*/
public static String getDoPath(String path){
path = path.replace("\\", "/");
String lastChar = path.substring(path.length() - 1);
if (!"/".equals(lastChar)) {
path += "/";
}
return path;
}
/**
* 创建指定的path路径目录
* @param path - 目录、路径
* @return
*/
public static boolean mkDir(String path){
File file = null;
try {
file = new File(path);
if (!file.exists()) {
return file.mkdirs();
}
}catch (Exception e) {
logger.error("创建文件失败..错误如下:");
e.printStackTrace();
}finally{
file = null;
}
return false;
}
}
- 浏览: 323528 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (312)
- 细细品味-Java (104)
- 细细品味-Xml (9)
- 细细品味-Json (6)
- 细细品味-Ajax (2)
- 细细品味-Jdbc (3)
- 细细品味-Ibatis (8)
- 细细品味-Oracle (4)
- 细细品味-Spring (10)
- 细细品味-Struts2 (8)
- 细细品味-Lucene (9)
- 细细品味-Jquery (36)
- 细细品味-Eclipse (6)
- 细细品味-Javascrip (28)
- 细细品味-Hibernate (9)
- 细细品味-WebService (6)
- 细细品味-Javascript API (6)
- 细细品味-ArcGIS Server (6)
- 细细品味-Flex (4)
- 细细品味-Linux (11)
- 细细品味-SVG (16)
- 细细品味-html5 (27)
- 细细品味-Shiro (1)
- 细细品味-Maven (3)
- 细细品味-Mysql (4)
- 细细品味-Tomcat (3)
- 细细品味-Android (0)
- 细细品味-Windows (1)
- 细细品味-Google Guava (21)
- 细细品味-FusionCharts (2)
- 细细品味-算法 (10)
- 细细品味-Dojo框架 (2)
- 细细品味-Http协议 (1)
- 细细品味-地理编码 (14)
- 细细品味-中文乱码 (3)
- 细细品味-数据结构 (2)
- 细细品味-面试题 (1)
- 设计模式 (0)
- 杂谈小记 (3)
- 随笔小记 (4)
- three.js (1)
- 细细品味-云计算&虚拟化 (0)
- 细细品味-架构 (1)
- 细细品味-系统优化 (1)
- 细细品味-hbase (1)
- 细细品味-hadoop (5)
- 细细品味-hive (3)
- 细细品味-flume (1)
- 细细品味-hdfs (2)
- 细细品味-微服务 (1)
- 细细品味-Spring Boot (1)
最新评论
-
final7tifa:
感觉写的挺好
封装JAVA 通过反射 POI导出Excel文件(直接可用 含测试代码) -
漆停停:
...
封装JAVA 通过反射 POI导出Excel文件(直接可用 含测试代码) -
sybell:
很是不错的文章,不过要达到熟练使用,都还在实际项目中使用。
Effective Java学习(并发)之——同步访问共享可变数据
发表评论
-
Spring Cloud 架构,例子
2016-10-31 16:17 1931Genesis. Is a Spring Cloud Pro ... -
使用Maven Jenkins和JMeter自动化测试
2015-10-19 14:36 1745有两个插件能够实现在Maven build集成Jmeter测 ... -
GITHUB干货系列:JAVA 资源集合- GITHUB.COM
2015-04-02 14:50 1015转载于:http://www.blogjava.net ... -
使用logback.xml配置来实现日志文件输出
2014-08-15 12:59 11278Logback是由 ... -
(转)115个Java面试题和答案——终极列表(下)
2014-04-24 14:46 0第一篇讨论了面向对象编程和它的特点, ... -
(转)115个Java面试题和答案——终极列表(上)
2014-04-24 14:40 0本文我们将要讨论Java面试中的各种不同 ... -
(转)java内部类总结
2014-04-23 17:05 718内部类是指在一个外部类的内部再定义一个类。内部类作为外 ... -
JAVA设计模式学习之——适配器模式
2014-02-26 11:10 0适配器模式把一个 ... -
Guava API学习之Resources
2014-03-03 13:10 754Resources提供提供操作clas ... -
Guava API学习之CharSequenceReader
2014-03-03 13:10 716CharSequenceReader类是 ... -
Guava API学习之RangeSet
2014-03-03 13:11 792前面谈到了Guava中新引入的Rang ... -
Guava API学习之Range
2014-03-03 13:10 1115在Guava中新增了一个新的类型Rang ... -
Guava Collections API学习之Multisets
2014-02-26 09:30 405今天谈谈Guava类库中的Multis ... -
JAVA设计模式学习之——工厂模式(Simple Factory)
2014-02-25 14:56 0Simple Factory模式(又 ... -
JAVA设计模式学习之——单例模式
2014-02-25 14:26 0相对于JAVA的单例模式,大家都不会很生疏了,下面是 ... -
Guava Collections API学习之Iterators
2014-02-25 14:24 681Iterators类提供了返回Itera ... -
Guava Collections API学习之Lists
2014-02-25 14:24 922Lists类主要提供了对List类的子 ... -
Guava Collections API学习之ArrayListMultimap
2014-02-25 14:25 696ArrayListMultimap类的继承关系如下图 ... -
Guava Collections API学习之AbstractMapBasedMultimap
2014-02-25 14:25 742AbstractMapBasedMult ... -
Guava Collections API学习之HashBiMap
2014-02-25 14:25 649HashBiMap存储的键和值都只能唯一 ...
相关推荐
支持多线程上传下载,支持断点续传功能的一个工具类。
`FileUtils` 是一个强大的文件处理工具类,它提供了丰富的API来简化文件操作,避免了许多常见的错误和陷阱。通过使用该工具类,开发者可以更加专注于业务逻辑的实现,提高开发效率和代码质量。在实际项目中,强烈...
QrcodeUtils.java\防止SQL注入和XSS攻击Filter\获取文件绝对路径最后的文件夹名称\加密工具类 - CryptoUtils.java\日期工具类 - DateUtil.java\图片处理工具类 - ImageUtils.java\文件相关操作工具类——FileUtils....
在Java开发中,进行文件操作是必不可少的一部分,Apache Commons IO库提供了一个非常方便的工具类FileUtils,它对Java基础的IO操作进行了封装,使得文件处理更加简洁易用。在本文中,我们将详细介绍FileUtils工具类...
Java操作工具类是Java开发中常见的一种代码组织方式,它集合了各种常用的功能函数,以提高代码复用性和开发效率。这些工具类通常包含了对字符串、数组、集合、日期时间等基本数据类型的操作,以及文件I/O、网络通信...
Java中的`File`类是Java I/O流体系中不可或缺的一部分,它是用来操作...结合`FileUtils`这样的辅助工具类,我们可以编写出更简洁、易维护的代码。在实际开发中,还应考虑异常处理和错误恢复策略,以确保程序的健壮性。
通常,这样的库会包含一系列针对特定场景的工具类,如日期时间处理、文件操作、字符串格式化、数据校验等。例如,可能会有一个DateTimeUtils类,提供日期和时间的格式化、比较和转换方法;一个FileUtils类,用于文件...
`FileUtils`是一个方便的工具类,用于简化这些操作。本篇将详细讲解如何利用`FileUtils`实现文件的上传和下载,并介绍如何在Java Web项目中集成和使用这个工具。 首先,`FileUtils`并不是Java标准库的一部分,而是...
Java文件操作是编程中不可或缺的一部分,尤其是在处理I/O流、文件读写以及文件管理时。Apache Commons IO是一个非常实用的库,它为Java开发者提供了大量的工具类和方法,以简化文件操作。在这个场景中,我们关注的是...
Java 文件读写工具类是 Java 语言中一个非常重要的工具类,主要用于实现文件的读写操作。在本文中,我们将详细介绍 Java 文件读写工具类的使用和实现。 获取项目根目录 在 Java 文件读写工具类中,获取项目根目录...
- `org.apache.commons.io`: 提供了文件操作相关的工具类,如`FileUtils`, `IOUtils`等,简化了文件读写和复制等操作。 7. **Log4j或SLF4J** - 日志工具对于跟踪和调试程序至关重要,Log4j和SLF4J是两个广泛使用...
1. **FileUtils.java**: 文件操作工具类,提供了处理文件和目录的便捷方法。例如,复制文件、删除文件、创建目录、读写文件内容等。这些方法通常比直接使用Java的`java.io`包更安全、简洁。 2. **ImageUtils.java**...
3. **文件操作工具类**:`java.io.File`类提供了基本的文件操作,如创建、删除、重命名等。而Apache Commons IO库中的`org.apache.commons.io.FileUtils`提供了更高级的文件操作,如读写文件、复制、移动等,简化了...
D:\002 我的工具类\001 流\文件操作整体2\FileUtils.java D:\002 我的工具类\001 流\文件操作整体2\IOUtils.java D:\002 我的工具类\001 流\文件操作整体2\PropertiesUtil.java D:\002 我的工具类\0013数字 D:\002 ...
2. **文件工具类**: - 文件操作是开发中常见的需求,这类工具类可能包含读写文件、创建删除文件或目录、文件流处理等功能。例如,`FileUtils`类可能封装了Java的`File`类和`InputStream/OutputStream`的常用操作,...
- Apache Commons IO库提供了丰富的文件操作工具类,如`FileUtils`,简化了常见的文件操作。 10. **异常处理**: - 文件操作常涉及`IOException`,需妥善处理,例如使用try-catch-finally结构。 以上就是Java...
1. **FileUtils**: 这个工具类主要处理与文件和目录相关的操作。它可能提供了如创建、删除、复制、移动文件,读取文件内容,检查文件是否存在等功能。例如,`readFileToString()`方法用于将整个文件读取为字符串,`...
2.文件处理工具类:FileUtils 3.图片处理工具类:ImageUtils 4.媒体类型工具类:MimeTypeUtils 5.字符集工具类:CharsetKit 6.request请求处理工具类:CommonUtil 7.类型转换器:Convert 8.时间工具类:DateUtils 9....
收集下JAVA日常开发常用的工具类 包括 文件处理工具:FileUtils 有需要的大家可以下载使用希望能帮到各位
"28个java常用的工具类源码"这个压缩包包含了在Java开发中经常用到的一些工具类,这些工具类可以帮助我们简化代码,提高开发效率。下面,我们将详细探讨这28个工具类可能涵盖的知识点。 1. **ArrayList 和 ...