import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List; import org.apache.log4j.Logger; public class FileUtils { /**
* 读取一个文件夹下所有文件的绝对路径。忽略此文件夹下的问价夹
*
* @param absFolderPath
* 文件夹绝对路径
* @return List<String>
*/
public static List<String> readFilePath(String absFolderPath) {
List<String> paths = new ArrayList<String>();
File file = new File(absFolderPath);
// 文件夹
if (file.isDirectory()) {
for (File childFile : file.listFiles()) {
// 不是文件夹并且没有被操作
if (!childFile.isDirectory()) {
// 路径通过"/"手动创建,避免因window下出现反斜杠\ 路径的情况
paths.add(absFolderPath + "/" + childFile.getName());
}
}
}
return paths;
} /**
* 通过文件的绝对路径删除文件,如果传入是文件夹路径,忽略并返回false
*
* @param absFilePath
* 文件绝对路径
* @return boolean
*/
public static boolean deleteFile(String absFilePath) {
boolean result = false;
File file = new File(absFilePath);
if (!file.isDirectory()) {
file.delete();
result = true;
}
return result;
} /**
* 删除问价夹下所有文件
*
* @param absFolderPath
* @return boolean
*/
public static boolean deleteAllFileInTheFolder(String absFolderPath) {
boolean result = true;
for (String filePath : FileDealUtil.readFilePath(absFolderPath)) {
result = result && FileDealUtil.deleteFile(filePath);
}
return result;
} /**
* 将文件移动到指定问价夹下
*
* @param filePath
* 文件路径
* @param folderPath
* 文件夹路径
* @return String 移动后文件路径,filePath为文件夹或folderPath为文件或文件正在被其他进程打开无法移动返回null */
public static String moveFile(String filePath, String folderPath) {
String path = null; File file = new File(filePath);
if (file.isDirectory())
return path;
File folder = new File(folderPath);
if (!folder.exists()) {
folder.mkdirs();
}
if (!folder.isDirectory())
return path; File nowFile = new File(folderPath + "/" + file.getName());
if (nowFile.exists())
nowFile.delete();
if (file.renameTo(new File(folder, file.getName())))
path = folderPath + "/" + file.getName();
return path;
} /**
* 得到文件输入流
*
* @param path
* 绝对路径
* @return InputStream */
public static InputStream getFile(String path) {
// First try to read from the file system ...
File file = new File(path);
if (file.exists() && file.canRead()) {
try {
return new FileInputStream(file);
} catch (FileNotFoundException e) {
// continue
return null;
}
}
return null;
} /**
* 判断文件夹是否存在 void
*
*/
public static boolean existFolder(String folderPath) {
File file = new File(folderPath);
return file.exists();
} /**
* 创建文件夹
*
* @param folderPath
* void
*/
public static void creatFolder(String folderPath) {
if (!existFolder(folderPath)) {
File file = new File(folderPath);
file.mkdirs();
}
} /**
* 获取文件大小 如果文件存在并且不是目录,返回文件大小,如果文件不存在或者是目录,返回0
*
* @return Long 单位bytes
*/
public static Long getFileSize(String filePath) {
File file = new File(filePath);
if (file.exists() && !file.isDirectory()) {
return file.length();
} else {
return 0L;
}
} /**
* 从文件路径中分离出文件名
*
* @param filePath
* @return String
*/
public static String splitFileName(String filePath) {
return filePath.substring(filePath.lastIndexOf("/") + 1);
} /**
*
* @param filePath
* @param inputStream
* @return boolean
*/
public static boolean writeFile(String filePath, InputStream inputStream) {
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(filePath); int bytesRead = 0;
byte[] buffer = new byte[2048];
while ((bytesRead = inputStream.read(buffer, 0, 2048)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} finally {
try {
outputStream.close();
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

FileUtils的更多相关文章

  1. Java程序员的日常—— FileUtils工具类的使用

    package cn.xingoo.learn.commons; import org.apache.commons.io.FileUtils; import org.apache.commons.i ...

  2. cocos2dx的android版FileUtils的坑

    cocos2dx3.13,FileUtils-android.cpp中可以看到: FileUtils::Status FileUtilsAndroid::getContents(const std:: ...

  3. Java File类总结和FileUtils类

    Java File类总结和FileUtils类 文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录. 用public boolean exists()可以判断文件是否存在. Fi ...

  4. Can't exec "aclocal": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 326.

    今天执行:autoreconf -fvi的时候出现如下错误: autoreconf: Entering directory `.' autoreconf: configure.in: not usin ...

  5. 文件相关操作工具类——FileUtils.java

    文件相关操作的工具类,创建文件.删除文件.删除目录.复制.移动文件.获取文件路径.获取目录下文件个数等,满足大多数系统需求. 源码如下:(点击下载 FileUtils.java) import jav ...

  6. 应用apache FileUtils把网页另存为文件

    public static void foo() { try { URL url = new URL("http://www.webservicex.net/globalweather.as ...

  7. Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils

    1.错误叙述性说明 警告: Could not create JarEntryRevision for [jar:file:/D:/MyEclipse/apache-tomcat-7.0.53/web ...

  8. apache的FileUtils方法大全

    FileUtils 获取系统的临时目录路径:getTempDirectoryPath() [java] view plaincopyprint? public static String getTem ...

  9. FileUtils类介绍

    Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了.如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归. 下面是的一个解决方 ...

随机推荐

  1. LNMP一键安装包 V1.1 通告

    LNMP一键安装包 是一个用Linux Shell编写的能够为CentOS/RadHat.Debian/Ubuntu VPS(VDS)或独立主机安装LNMP(Nginx.MySQL/MariaDB.P ...

  2. ★ Linked List Cycle II -- LeetCode

    证明单链表有环路: 本文所用的算法 能够 形象的比喻就是在操场其中跑步.速度快的会把速度慢的扣圈  能够证明,p2追赶上p1的时候.p1一定还没有走完一遍环路,p2也不会跨越p1多圈才追上  我们能够 ...

  3. android开发之使用Messenger实现service与activity交互

    service与activity交互的方式有多种,这里说说使用Messenger来实现两者之间的交互. Service程序 public class MessengerService extends ...

  4. Android 使用弹出对话框,报Unable to add window错误

    今天在使用Android弹出对话框的时候,报了一个unable to add window错误,我的代码如下 new AlertDialog.Builder(getApplicationContext ...

  5. foreach遍历----for(object o: list)

    备注,两种写法是一样的.

  6. 硬编码写RadioGroup的时候要注意设置RadioButton的Id

    硬编码写RadioGroup的时候要注意RadioButton的id重复问题,导致选择的时候出现能够多选的情况发生,如下代码,注意Id的设置,这样避免Radiobutton的id重复. /** * 生 ...

  7. Visual C#实现Windows信使服务

    现在有很多网络管理软件都具备网络上信息实时传送的功能,虽然有些网络通讯软件功能比较强大,有的软件不仅可以传送文本信息,还可以传送二进制文件等.但 它们都有一个无法克服的缺点,那就是分发比较困难,信息传 ...

  8. iOS中JavaScript和OC交互

    转载自:http://www.devzeng.com/blog/ios-uiwebview-interaction-with-javascript.html 还可参考的文章:http://blog.c ...

  9. C# 泛型2

    我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为方法的参数类 ...

  10. I/O多路转接之select

    系统提供select函数来实现多路复⽤用输入/输出模型.select系统调用是用来让我们的程序监视 多个文件句柄的状态变化的.程序会停在select这里等待,直到被监视的文件句柄有一个或 多个发生了状 ...