package util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import java.util.jar.JarEntry;
import java.util.jar.JarOutputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.IOUtils;
public class FileUtil {
public static String getFilePath(String source_filename,
String pointFilePath) {
String ext = "";
String source_filename_no_ext = source_filename;
if (source_filename.indexOf(".") > 0) {
ext = source_filename.substring(source_filename.lastIndexOf("."));
source_filename_no_ext = source_filename.substring(0,
source_filename.lastIndexOf("."));
}
String uploadRefPath = (pointFilePath == null || pointFilePath.trim()
.length() == 0) ? getSystemTempPath() : pointFilePath;
if (uploadRefPath != null
&& !uploadRefPath
.endsWith(System.getProperty("file.separator"))
&& !uploadRefPath.endsWith("/")
&& !uploadRefPath.endsWith("\\")) {
uploadRefPath += System.getProperty("file.separator");
}
String uploadPath = uploadRefPath;
File uploadDir = new File(uploadPath);
if (!uploadDir.exists())
uploadDir.mkdirs();
Date today = new Date();
String formatString = "yyyyMMddHHmmss";
SimpleDateFormat dateformat = new SimpleDateFormat(formatString);
String filename = source_filename_no_ext + dateformat.format(today);
for (int i = 0; i < 10000; i++) {
String real_filename = filename + "_" + i + ext;
File file = new File(uploadDir, real_filename);
if (!file.exists()) {
return uploadRefPath + real_filename;
}
}
return null;
}
/**
* 获取系统的临时目录
*
* @return
*/
public static String getSystemTempPath() {
return System.getProperty("java.io.tmpdir");
}
// ~ Methods add by wubing
// -------------------------------------------------------------
/**
* 获得指定配置文件属性
*
* @param fileName
* 文件名称
* @return Properties 文件中所包含的所有属性
* @throws Exception
* 读取属性过程中的任何异常
*/
public static Properties getProperties(String fileName) throws Exception {
Properties initProps = new Properties();
InputStream in = null;
try {
in = getInputStream(fileName);
initProps.load(in);
} finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e) {
}
}
return initProps;
}
/**
* 获取指定配置文件属性的读取流,读取路径为本类的CLASSLOADER或者父CLASSLOADER
*
* @param fileName
* 文件名称
*
* @return InputStream 该文件所对应的输入流
* @throws Exception
* 读取输入流过程中的任何异常
*/
public static InputStream getInputStream(String fileName) throws Exception {
return getInputStream(getFile(getFileURL(fileName).getFile()));
}
public static InputStream getInputStream(File file) throws Exception {
return new BufferedInputStream(new FileInputStream(file));
}
/**
* 根据文件名获取其在应用中的相对路径
*
* @param fileName
* 文件名
* @return URL 文件在应用中的相对路径
* @throws Exception
* 获取路径过程中的任何异常
*/
public static URL getFileURL(String fileName) throws Exception {
// 从本类CLASSLOADER相应路径中读取文件
URL fileURL = FileUtil.class.getClassLoader().getResource(fileName);
if (fileURL == null) {
FileUtil.class.getClassLoader().getResource("/" + fileName);
}
if (fileURL == null) {
Thread.currentThread().getContextClassLoader()
.getResource(fileName);
}
if (fileURL == null) {
fileURL = ClassLoader.getSystemResource(fileName);
}
if (fileURL == null) {
fileURL = new File(fileName).toURL();
}
return fileURL;
}
/**
* 保存属性到文件
*
* @param fileName
* 文件名
* @param prop
* 需存储的属性
* @throws Exception
* 存储属性过程中的任何异常
*/
public static void setProperties(String fileName, Properties prop)
throws Exception {
FileOutputStream fs = null;
try {
fs = new FileOutputStream(getFileURL(fileName).getFile());
prop.store(fs, "store at " + new Date());
} finally {
// 关闭流
IOUtils.closeQuietly(fs);
}
}
/**
* 判断是否需要重新LOAD地址配置文件
*
* @param fileName
* 文件名
* @param lastModify
* 原最后修改时间
* @return boolean 是否需要重新读取
* @throws Exception
* 判断重新LOAD过程中的任何异常
*/
public static boolean needReload(String fileName, long lastModify)
throws Exception {
// 判断文件最后更新时间,决定是否RELOAD
if (getLastModify(fileName) > lastModify) {
return true;
}
return false;
}
/**
* 根据文件名获取文件对象,在当前CLASSLOADER路径下寻找文件
*
* @param fileName
* 文件名
* @return File 文件对象
* @throws Exception
* 获取文件过程中的任何异常
*/
public static File getFile(String fileName) throws Exception {
return new File(getFileURL(fileName).getFile());
}
/**
* 获取文件最后修改时间
*
* @param fileName
* 文件名
* @return long 文件最后修改时间
* @throws Exception
* 获取最后修改时间过程中的任何异常
*/
public static long getLastModify(String fileName) throws Exception {
// 获取当前文件最新修改时间
return getFile(fileName).lastModified();
}
/**
* 创建一个目录
*
* @param dir
* 目录路径
* @param ignoreIfExitst
* 如果已经存在该目录是否忽略
* @return boolean 是否创建成功
* @throws Exception
* 创建目录过程中的任何异常
*/
public static boolean createDir(String dir, boolean ignoreIfExitst)
throws Exception {
File file = getFile(dir);
if (ignoreIfExitst && file.exists()) {
return false;
}
return file.mkdir();
}
/**
* 创建一个目录,如果它的父目录不存在,则自动创建
*
* @param dir
* 目录路径
* @param ignoreIfExitst
* 如果已经存在该目录是否忽略
* @return boolean 是否创建成功
* @throws Exception
* 创建目录过程中的任何异常
*/
public static boolean createDirs(String dir, boolean ignoreIfExitst)
throws Exception {
File file = getFile(dir);
if (ignoreIfExitst && file.exists()) {
return false;
}
return file.mkdirs();
}
/**
* 删除文件
*
* @param filename
* 被删除文件的文件名
* @return boolean 是否删除成功
* @throws Exception
* 删除文件过程中的任何异常
*/
public static boolean deleteFile(String filename) throws Exception {
File file = getFile(filename);
return deleteFile(file);
}
/**
* 删除文件
*
* @param file
* 被删除文件
* @return boolean 是否删除成功
* @throws Exception
* 删除文件过程中的任何异常
*/
public static boolean deleteFile(File file) throws Exception {
if (file.isDirectory()) {
return deleteDir(file);
}
if (!file.exists()) {
return false;
}
return file.delete();
}
/**
* 删除目录,包括其下的所有子目录和文件
*
* @param dir
* 被删除的目录名
* @return boolean 是否删除成功
* @throws Exception
* 删除目录过程中的任何异常
*/
public static boolean deleteDir(File dir) throws Exception {
if (dir.isFile()) {
deleteFile(dir);
}
File[] files = dir.listFiles();
if (files != null) {
for (int i = 0; i < files.length; i++) {
File file = files[i];
if (file.isFile()) {
file.delete();
} else {
deleteDir(file);
}
}
}
return dir.delete();
}
/**
* 使用流里的内容创建一个新文件
*
* @param stream
* 原文件流
* @param fileName
* 指定的文件路径及文件名
* @return File 生成的新文件
* @throws Exception
* 生成文件过程中的任何异常
*/
public static File createFile(InputStream stream, String fileName)
throws Exception {
File newFile = new File(fileName);
OutputStream fileOut = new BufferedOutputStream(new FileOutputStream(
newFile));
byte[] buffer = new byte[8192];
int bytesRead = 0;
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
fileOut.write(buffer, 0, bytesRead);
}
fileOut.close();
stream.close();
return newFile;
}
public static void createFile(String output, String content)
throws Exception {
try {
OutputStreamWriter fw = new OutputStreamWriter(
new FileOutputStream(output));
PrintWriter out = new PrintWriter(fw);
out.print(content);
out.close();
fw.close();
} catch (Exception ex) {
throw new Exception(ex);
}
}
// 获取可写流
public static Writer openWithWrite(String file, boolean append)
throws Exception {
return new BufferedWriter(
new FileWriter(FileUtil.getFile(file), append));
}
// 获取可读流
public static Reader openWithRead(String file) throws Exception {
return new BufferedReader(new FileReader(FileUtil.getFile(file)));
}
// 获得文件字节流
public static byte[] getFileBytes(InputStream inputStream) throws Exception {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(
1024);
byte[] block = new byte[512];
while (true) {
int readLength = inputStream.read(block);
if (readLength == -1) {
break; // end of file
}
byteArrayOutputStream.write(block, 0, readLength);
}
byte[] retValue = byteArrayOutputStream.toByteArray();
byteArrayOutputStream.close();
return retValue;
}
// 获得文件字节流
public static byte[] getFileBytes(String file) throws Exception {
return getFileBytes(getInputStream(file));
}
public static void move(String input, String output) throws Exception {
File inputFile = new File(input);
File outputFile = new File(output);
try {
inputFile.renameTo(outputFile);
} catch (Exception ex) {
throw new Exception("Can not mv" + input + " to " + output
+ ex.getMessage());
}
}
public static boolean copy(String input, String output) throws Exception {
int BUFSIZE = 0x10000;
FileInputStream fis = new FileInputStream(input);
FileOutputStream fos = new FileOutputStream(output);
try {
byte buf[] = new byte[BUFSIZE];
int i;
while ((i = fis.read(buf)) > -1) {
fos.write(buf, 0, i);
}
} catch (Exception ex) {
throw new Exception("makeHome" + ex.getMessage());
} finally {
fis.close();
fos.close();
}
return true;
}
public static void makeHome(String home) throws Exception {
File homedir = new File(home);
if (!homedir.exists()) {
try {
homedir.mkdirs();
} catch (Exception ex) {
throw new Exception("Can not mkdir :" + home
+ " Maybe include special charactor!");
}
}
}
public static void copyDir(String sourcedir, String destdir)
throws Exception {
File dest = new File(destdir);
File source = new File(sourcedir);
String files[] = source.list();
try {
makeHome(destdir);
} catch (Exception ex) {
throw new Exception("CopyDir:" + ex.getMessage());
}
for (int i = 0; i < files.length; i++) {
String sourcefile = source + File.separator + files[i];
String destfile = dest + File.separator + files[i];
File temp = new File(sourcefile);
if (temp.isFile()) {
try {
copy(sourcefile, destfile);
} catch (Exception ex) {
throw new Exception("CopyDir:" + ex.getMessage());
}
}
}
}
public static void recursiveRemoveDir(File directory) throws Exception {
if (!directory.exists()) {
throw new IOException(directory.toString() + " do not exist!");
}
String filelist[] = directory.list();
File tmpFile = null;
for (int i = 0; i < filelist.length; i++) {
tmpFile = new File(directory.getAbsolutePath(), filelist[i]);
if (tmpFile.isDirectory()) {
recursiveRemoveDir(tmpFile);
} else if (tmpFile.isFile()) {
try {
tmpFile.delete();
} catch (Exception ex) {
throw new Exception(tmpFile.toString()
+ " can not be deleted " + ex.getMessage());
}
}
}
try {
directory.delete();
} catch (Exception ex) {
throw new Exception(directory.toString() + " can not be deleted "
+ ex.getMessage());
} finally {
filelist = null;
}
}
// 从远程读文件,且保存在本地
public static boolean remoteFileRead(String sUrl, String path) {
try {
URL url = new URL(sUrl);
URLConnection conn = url.openConnection();
conn.connect();
HttpURLConnection httpConn = (HttpURLConnection) conn;
if (httpConn.getResponseCode() == 200) {
System.out.println("Connect to " + sUrl
+ " failed,return code:" + httpConn.getResponseCode());
return false;
}
File file = createFile(conn.getInputStream(), path);
return true;
} catch (Exception ex) {
ex.printStackTrace();
return false;
}
}
public static String getFileString(String fileName) throws Exception {
StringBuffer sb = new StringBuffer();
BufferedReader br = null;
String line = null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(
fileName)));
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
} finally {
// 关闭流
IOUtils.closeQuietly(br);
}
return sb.toString();
}
public static String getFileString(String fileName, String charSet)
throws Exception {
StringBuffer sb = new StringBuffer();
BufferedReader br = null;
String line = null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(
fileName), charSet));
while ((line = br.readLine()) != null) {
sb.append(line);
}
} finally {
// 关闭流
IOUtils.closeQuietly(br);
}
return sb.toString();
}
// 将文本转成流
public static InputStream stringToInputStream(String str)
throws UnsupportedEncodingException {
ByteArrayInputStream stream = new ByteArrayInputStream(str
.getBytes("UTF-8"));
return stream;
}
/**
* 搜索文件
*
* @param dir
* 起始文件夹
* @param s
* @return
*/
public static File[] searchFiles(String dir, String s) {
// 起始文件夹
File file = new File(dir);
s = s.replace('.', '#');
s = s.replaceAll("#", "\\\\.");
s = s.replace('*', '#');
s = s.replaceAll("#", ".*");
s = s.replace('?', '#');
s = s.replaceAll("#", ".?");
s = "^" + s + "$";
Pattern p = Pattern.compile(s);
List<File> list = filePattern(file, p);
if (list == null) {
return null;
}
File[] rtn = new File[list.size()];
list.toArray(rtn);
return rtn;
}
/**
* @param file
* File 起始文件夹
* @param p
* Pattern 匹配类型
* @return ArrayList 其文件夹下的文件夹
*/
private static List<File> filePattern(File file, Pattern p) {
if (file == null) {
return null;
} else if (file.isFile()) {
Matcher fMatcher = p.matcher(file.getName());
if (fMatcher.matches()) {
List<File> list = new ArrayList<File>();
list.add(file);
return list;
}
} else if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null && files.length > 0) {
List<File> list = new ArrayList<File>();
for (int i = 0; i < files.length; i++) {
List<File> rlist = filePattern(files[i], p);
if (rlist != null) {
list.addAll(rlist);
}
}
return list;
}
}
return null;
}
/**
* 打jar、war、zip包
*
* @param jarFileName
* @param inputFilePath
* @param base
*/
public static void pack(String jarFileName, String inputFilePath,
String base) {
JarOutputStream jarOutputStream = null;
try {
File inputFile = new File(inputFilePath);
jarOutputStream = new JarOutputStream(new FileOutputStream(
jarFileName));
pack(jarOutputStream, inputFile, base);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
jarOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void pack(JarOutputStream jarOutputStream, File inputFile,
String base) throws IOException {
if (inputFile.isDirectory()) {
File[] files = inputFile.listFiles();
jarOutputStream.putNextEntry(new JarEntry(base + "/"));
base = base.length() == 0 ? "" : base + "/";
for (int i = 0; i < files.length; i++) {
pack(jarOutputStream, files[i], base + files[i].getName());
}
} else {
jarOutputStream.putNextEntry(new JarEntry(base));
FileInputStream in = null;
try {
in = new FileInputStream(inputFile);
int b;
while ((b = in.read()) != -1) {
jarOutputStream.write(b);
}
} finally {
in.close();
}
}
}
}
分享到:
相关推荐
java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java...
下面将详细讨论Java中的文件操作类和相关知识点。 1. **`java.io`包**: `java.io`包是Java中处理输入输出的核心包,包含了众多用于文件操作的类。其中,`File`类是文件和目录路径名的抽象表示,提供了大量的静态...
【JAVA文件操作类和文件夹的操作】 在Java编程中,处理文件和文件夹是常见的任务。文件操作类和方法使得开发者能够创建、读取、写入、删除文件以及管理文件夹结构。以下是一些关键的Java类和方法,用于进行文件和...
基于微信小程序的在线办公小程序答辩PPT.pptx
这个数据集来自世界卫生组织(WHO),包含了2000年至2015年期间193个国家的预期寿命和相关健康因素的数据。它提供了一个全面的视角,用于分析影响全球人口预期寿命的多种因素。数据集涵盖了从婴儿死亡率、GDP、BMI到免疫接种覆盖率等多个维度,为研究者提供了丰富的信息来探索和预测预期寿命。 该数据集的特点在于其跨国家的比较性,使得研究者能够识别出不同国家之间预期寿命的差异,并分析这些差异背后的原因。数据集包含22个特征列和2938行数据,涉及的变量被分为几个大类:免疫相关因素、死亡因素、经济因素和社会因素。这些数据不仅有助于了解全球健康趋势,还可以辅助制定公共卫生政策和社会福利计划。 数据集的处理包括对缺失值的处理、数据类型转换以及去重等步骤,以确保数据的准确性和可靠性。研究者可以使用这个数据集来探索如教育、健康习惯、生活方式等因素如何影响人们的寿命,以及不同国家的经济发展水平如何与预期寿命相关联。此外,数据集还可以用于预测模型的构建,通过回归分析等统计方法来预测预期寿命。 总的来说,这个数据集是研究全球健康和预期寿命变化的宝贵资源,它不仅提供了历史数据,还为未来的研究和政策制
基于微信小程序的“健康早知道”微信小程序答辩PPT.pptx
基于微信小程序的电影交流平台答辩PPT.pptx
计算机字符编码GB18030
Hive 操作基础(进阶版)多级分区数据文件2
基于java的贫困生管理系统答辩PPT.pptx
pandas whl安装包,对应各个python版本和系统(具体看资源名字),找准自己对应的下载即可! 下载后解压出来是已.whl为后缀的安装包,进入终端,直接pip install pandas-xxx.whl即可,非常方便。 再也不用担心pip联网下载网络超时,各种安装不成功的问题。
TA_lib库(whl轮子),直接pip install安装即可,下载即用,非常方便,各个python版本对应的都有。 使用方法: 1、下载下来解压; 2、确保有python环境,命令行进入终端,cd到whl存放的目录,直接输入pip install TA_lib-xxxx.whl就可以安装,等待安装成功,即可使用! 优点:无需C++环境编译,下载即用,方便
本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac
tornado-6.2b2.tar.gz
javawe论坛项目 原生技术
tornado-6.2b1-cp310-cp310-macosx_10_9_universal2.whl
随着物流行业的快速发展,货运管理变得愈发重要。为了提高货运效率,确保货物安全,我们开发了这款基于司机信用评价的货运管理系统。 该系统主要包含了货物信息管理、订单评价管理、货主管理等多个功能模块。在货物信息管理模块中,用户可以查看和管理货物的详细信息,包括货物名称、规格、装车状态、运输状态以及卸货状态等,方便用户随时掌握货物的动态。 订单评价管理模块是该系统的核心之一,它允许货主对司机的服务进行评价,系统会根据评价数据对司机进行信用评分。这一功能不仅有助于提升司机的服务质量,还能为货主提供更加可靠的货运选择。 此外,货主管理模块提供了货主信息的录入、修改和查询等功能,方便用户管理自己的货主资料。系统界面简洁明了,以蓝色为主色调,设计现代且专业,为用户提供了良好的使用体验。 通过该系统,用户可以轻松实现货物信息的查看和管理,对司机的服务进行评价,提高货运效率和服务质量。同时,系统也为司机提供了一个展示自我、提升信用的平台,有助于推动物流行业的健康发展。
毕业生交流学习平台 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
基于java的广场舞团答辩PPT.pptx