值得分享的超全文件工具类FileUtil

网友投稿 775 2023-07-24

值得分享的超全文件工具类FileUtil

值得分享的超全文件工具类FileUtil

结合以前的项目开发中遇到的不同的文件操作,在这里基本上提取出了所遇到过的文件操作的工具类。

1 我项目中用到的文件工具类

1 读取raw文件、file文件,drawable文件,asset文件,比如本地的json数据,本地文本等;

如:String result =FileUtil.getString(context,”raw://first.json”)

2 读取本地的property文件,并转化为hashMap类型的数据 (simpleProperty2HashMap);

3 将raw文件拷贝到指定目录(copyRawFile);

4 基本文件读写操作(readFile,writeFile);

5 从文件的完整路径名(路径+文件名)中提取 路径(extractFilePath);

6 从文件的完整路径名(路径+文件名)中提取文件名(包含扩展名)

如:d:\path\file.ext –> file.ext(extractFileName)

7 检查指定文件的路径是否存在(pathExists)

8 检查制定文件是否存在(fileExists)

9 创建目录(makeDir)

10 移除字符串中的BOM前缀(removeBomHeaderIfExists)

package com.nsu.edu.library.utils;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.drawable.BitmapDrawable;

import android.text.TextUtils;

import java.io.BufferedReader;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

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.InputStreamReader;

import java.io.OutputStream;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Properties;

import java.util.Set;

/**

* Create By Anthony on 2016/1/15

* Class Note:文件工具类

* 包含内容:

* 1 读取raw文件、file文件,drawable文件,asset文件,比如本地的json数据,本地文本等;

* 如:String result =FileUtil.getString(context,"raw://first.json")

* 2 读取本地的property文件,并转化为hashMap类型的数据(simpleProperty2HashMap);

* 3 将raw文件拷贝到指定目录(copyRawFile);

* 4 基本文件读写操作(readFile,writeFile);

* 5 从文件的完整路径名(路径+文件名)中提取 路径(extractFilePath);

* 6 从文件的完整路径名(路径+文件名)中提取文件名(包含扩展名)

如:d:\path\file.ext --> file.ext(extractFileName)

*7 检查指定文件的路径是否存在(pathExists)

*8 检查制定文件是否存在(fileExists)

*9 创建目录(makeDir)

*10 移除字符串中的BOM前缀(removeBomHeaderIfExists)

*/

public class FileUtil {

public static final String ASSETS_PREFIX = "file://android_assets/";

public static final String ASSETS_PREFIX2 = "file://android_asset/";

public static final String ASSETS_PREFIX3 = "assets://";

public static final String ASSETS_PREFIX4 = "asset://";

public static final String RAW_PREFIX = "file://android_raw/";

public static final String RAW_PREFIX2 = "raw://";

public static final String FILE_PREFIX = "file://";

public static final String DRAWABLE_PREFIX = "drawable://";

public static InputStream getStream(Context context, String url) throws IOException {

String lowerUrl = url.toLowerCase();

InputStream is;

if (lowerUrl.startsWith(ASSETS_PREFIX)) {

String assetPath = url.substring(ASSETS_PREFIX.length());

is = getAssetsStream(context, assetPath);

} else if (lowerUrl.startsWith(ASSETS_PREFIX2)) {

String assetPath = url.substring(ASSETS_PREFIX2.length());

is = getAssetsStream(context, assetPath);

} else if (lowerUrl.startsWith(ASSETS_PREFIX3)) {

String assetPath = url.substring(ASSETS_PREFIX3.length());

is = getAssetsStream(context, assetPath);

} else if (lowerUrl.startsWith(ASSETS_PREFIX4)) {

String assetPath = url.substring(ASSETS_PREFIX4.length());

is = getAssetsStream(context, assetPath);

} else if (lowerUrl.startsWith(RAW_PREFIX)) {

String rawName = url.substring(RAW_PREFIX.length());

is = getRawStream(context, rawName);

} else if (lowerUrl.startsWith(RAW_PREFIX2)) {

String rawName = url.substring(RAW_PREFIX2.length());

is = getRawStream(context, rawName);

} else if (lowerUrl.startsWith(FILE_PREFIX)) {

String filePath = url.substring(FILE_PREFIX.length());

is = getFileStream(filePath);

} else if (lowerUrl.startsWith(DRAWABLE_PREFIX)) {

String drawableName = url.substring(DRAWABLE_PREFIX.length());

is = getDrawableStream(context, drawableName);

} else {

throw new IllegalArgumentException(String.format("Unsupported url: %s \n" +

"Supported: \n%sxxx\n%sxxx\n%sxxx", url, ASSETS_PREFIX, RAW_PREFIX, FILE_PREFIX));

}

return is;

}

private static InputStream getAssetsStream(Context context, String path) throws IOException {

return context.getAssets().open(path);

}

private static InputStream getFileStream(String path) throws IOException {

return new FileInputStream(path);

}

private static InputStream getRawStream(Context context, String rawName) throws IOException {

int id = context.getResources().getIdentifier(rawName, "raw", context.getPackageName());

if (id != 0) {

try {

return context.getResources().openRawResource(id);

} catch (Exception e) {

e.printStackTrace();

}

}

throw new IOException(String.format("raw of id: %s from %s not found", id, rawName));

}

private static InputStream getDrawableStream(Context context, String rawName) throws IOException {

int id = context.getResources().getIdentifier(rawName, "drawable", context.getPackageName());

if (id != 0) {

BitmapDrawable drawable = (BitmapDrawable) context.getResources().getDrawable(id);

Bitmap bitmap = drawable.getBitmap();

ByteArrayOutputStream os = new ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.PNG, 0, os);

return new ByteArrayInputStream(os.toByteArray());

}

throw new IOException(String.format("bitmap of id: %s from %s not found", id, rawName));

}

public static String getString(Context context, String url) throws IOException {

return getString(context, url, "UTF-8");

}

public static String getString(Context context, String url, String encoding) throws IOException {

String result = readStreamString(getStream(context, url), encoding);

if (result.startsWith("\ufeff")) {

result = result.substring(1);

}

return result;

}

public static String readStreamString(InputStream is, String encoding) throws IOException {

return new String(readStream(is), encoding);

}

public static byte[] readStream(InputStream is) throws IOException {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

byte[] buf = new byte[1024 * 10];

int readlen;

while ((readlen = is.read(buf)) >= 0) {

baos.write(buf, 0, readlen);

}

baos.close();

return baos.toByteArray();

}

public static Bitmap getDrawableBitmap(Context context, String rawName) {

int id = context.getResources().getIdentifier(rawName, "drawable", context.getPackageName());

if (id != 0) {

BitmapDrawable drawable = (BitmapDrawable) context.getResources().getDrawable(id);

if (drawable != null) {

return drawable.getBitmap();

}

}

return null;

}

/**

* 读取Property文件

*/

public static HashMap simpleProperty2HashMap(Context context, String path) {

try {

InputStream is = getStream(context, path);

return simpleProperty2HashMap(is);

} catch (IOException e) {

e.printStackTrace();

}

return new HashMap();

}

private static HashMap simpleProperty2HashMap(InputStream in) throws IOException {

HashMap hashMap = new HashMap();

Properties properties = new Properties();

properties.load(in);

in.close();

Set keyValue = properties.keySet();

for (Iterator it = keyValue.iterator(); it.hasNext(); ) {

String key = (String) it.next();

hashMap.put(key, (String) properties.get(key));

}

return hashMap;

}

/**

* 将raw文件拷贝到指定目录

*/

public static void copyRawFile(Context ctx, String rawFileName, String to) {

String[] names = rawFileName.split("\\.");

String toFile = to + "/" + names[0] + "." + names[1];

File file = new File(toFile);

if (file.exists()) {

return;

}

try {

InputStream is = getStream(ctx, "raw://" + names[0]);

OutputStream os = new FileOutputStream(toFile);

int byteCount = 0;

byte[] bytes = new byte[1024];

while ((byteCount = is.read(bytes)) != -1) {

os.write(bytes, 0, byteCount);

}

os.close();

is.close();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 基本文件操作

*/

public static String FILE_READING_ENCODING = "UTF-8";

public static String FILE_WRITING_ENCODING = "UTF-8";

public static String readFile(String _sFileName, String _sEncoding) throws Exception {

StringBuffer buffContent = null;

String sLine;

FileInputStream fis = null;

BufferedReader buffReader = null;

if (_sEncoding == null || "".equals(_sEncoding)) {

_sEncoding = FILE_READING_ENCODING;

}

try {

fis = new FileInputStream(_sFileName);

buffReader = new BufferedReader(new InputStreamReader(fis,

_sEncoding));

boolean zFirstLine = "UTF-8".equalsIgnoreCase(_sEncoding);

while ((sLine = buffReader.readLine()) != null) {

if (buffContent == null) {

buffContent = new StringBuffer();

} else {

buffContent.append("\n");

}

if (zFirstLine) {

sLine = removeBomHeaderIfExists(sLine);

zFirstLine = false;

}

buffContent.append(sLine);

}// end while

return (buffContent == null ? "" : buffContent.toString());

} catch (FileNotFoundException ex) {

throw new Exception("要读取的文件没有找到!", ex);

} catch (IOException ex) {

throw new Exception("读取文件时错误!", ex);

} finally {

// 增加异常时资源的释放

try {

if (buffReader != null)

buffReader.close();

if (fis != null)

fis.close();

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

public static File writeFile(InputStream is, String path, boolean isOverride) throws Exception {

String sPath = extractFilePath(path);

if (!pathExists(sPath)) {

makeDir(sPath, true);

}

if (!isOverride && fileExists(path)) {

if(path.contains(".")) {

String suffix = path.substring(path.lastIndexOf("."));

String pre = path.substring(0, path.lastIndexOf("."));

path = pre + "_" + TimeUtils.getNowTime() + suffix;

} else {

path = path + "_" + TimeUtils.getNowTime();

}

}

FileOutputStream os = null;

File file = null;

try {

file = new File(path);

os = new FileOutputStream(file);

int byteCount = 0;

byte[] bytes = new byte[1024];

while ((byteCount = is.read(bytes)) != -1) {

os.write(bytes, 0, byteCount);

}

os.flush();

return file;

} catch (Exception e) {

e.printStackTrace();

throw new Exception("写文件错误", e);

} finally {

try {

if (os != null)

os.close();

if (is != null)

is.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

public static File writeFile(String path, String content, String encoding, boolean isOverride) throws Exception {

if (TextUtils.isEmpty(encoding)) {

encoding = FILE_WRITING_ENCODING;

}

InputStream is = new ByteArrayInputStream(content.getBytes(encoding));

return writeFile(is, path, isOverride);

}

/**

* 从文件的完整路径名(路径+文件名)中提取 路径(包括:Drive+Directroy )

*

* @param _sFilePathName

* @return

*/

public static String extractFilePath(String _sFilePathName) {

int nPos = _sFilePathName.lastIndexOf('/');

if (nPos < 0) {

nPos = _sFilePathName.lastIndexOf('\\');

}

return (nPos >= 0 ? _sFilePathName.substring(0, nPos + 1) : "");

}

/**

* 从文件的完整路径名(路径+文件名)中提取文件名(包含扩展名)

* 如:d:\path\file.ext --> file.ext

*

* @param _sFilePathName

* @return

*/

public static String extractFileName(String _sFilePathName) {

return extractFileName(_sFilePathName, File.separator);

}

/**

* 从文件的完整路径名(路径+文件名)中提取文件名(包含扩展名)

* 如:d:\path\file.ext --> file.ext

*

* @param _sFilePathName 全文件路径名

* @param _sFileSeparator 文件分隔符

* @return

*/

public static String extractFileName(String _sFilePathName,

String _sFileSeparator) {

int nPos = -1;

if (_sFileSeparator == null) {

nPos = _sFilePathName.lastIndexOf(File.separatorChar);

if (nPos < 0) {

nPos = _sFilePathName

.lastIndexOf(File.separatorChar == '/' ? '\\' : '/');

}

} else {

nPos = _sFilePathName.lastIndexOf(_sFileSeparator);

}

if (nPos < 0) {

return _sFilePathName;

}

return _sFilePathName.substring(nPos + 1);

}

/**

* 检查指定文件的路径是否存在

*

* @param _sPathFileName 文件名称(含路径)

* @return 若存在,则返回true;否则,返回false

*/

public static boolean pathExists(String _sPathFileName) {

String sPath = extractFilePath(_sPathFileName);

return fileExists(sPath);

}

public static boolean fileExists(String _sPathFileName) {

File file = new File(_sPathFileName);

return file.exists();

}

/**

* 创建目录

*

* @param _sDir 目录名称

* @param _bCreateParentDir 如果父目录不存在,是否创建父目录

* @return

*/

public static boolean makeDir(String _sDir, boolean _bCreateParentDir) {

boolean zResult = false;

File file = new File(_sDir);

if (_bCreateParentDir)

zResult = file.mkdirs(); // 如果父目录不存在,则创建所有必需的父目录

else

zResult = file.mkdir(); // 如果父目录不存在,不做处理

if (!zResult)

zResult = file.exists();

return zResult;

}

/**

* 移除字符串中的BOM前缀

*

* @param _sLine 需要处理的字符串

* @return 移除BOM后的字符串.

*/

private static String removeBomHeaderIfExists(String _sLine) {

if (_sLine == null) {

return null;

}

String line = _sLine;

if (line.length() > 0) {

char ch = line.charAt(0);

// 使用while是因为用一些工具看到过某些文件前几个字节都是0xfffe.

// 0xfeff,0xfffe是字节序的不同处理.JVM中,一般是0xfeff

while ((ch == 0xfeff || ch == 0xfffe)) {

line = line.substring(1);

if (line.length() == 0) {

break;

}

ch = line.charAt(0);

}

}

return line;

}

}

2 网上的工具类

这个工具类也大同小异。其中也有很多和我上面重复的一些方法,也有上面没有的方法。转自Trinea的android-common项目。这里直接贴出来,不做任何更改。希望能对看到的人有帮助。也做一个笔记。

package com.nsu.edu.library.utils;

import android.text.TextUtils;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.List;

/**

* File Utils

*

* Read or write file

*

*

*

*

*

*

*

*

*

*

*

*

* Operate file

*

*

*

*

*

*

*

*

*

*

*

*

*

* @author Trinea 2012-5-12

*/

public class FileUtils {

public final static String FILE_EXTENSION_SEPARATOR = ".";

private FileUtils() {

throw new AssertionError();

}

/**

* read file

*

* @param filePath

* @param charsetName The name of a supported {@link java.nio.charset.Charset charset}

* @return if file not exist, return null, else return content of file

* @throws RuntimeException if an error occurs while operator BufferedReader

*/

public static StringBuilder readFile(String filePath, String charsetName) {

File file = new File(filePath);

StringBuilder fileContent = new StringBuilder("");

if (file == null || !file.isFile()) {

return null;

}

BufferedReader reader = null;

try {

InputStreamReader is = new InputStreamReader(new FileInputStream(file), charsetName);

reader = new BufferedReader(is);

String line = null;

while ((line = reader.readLine()) != null) {

if (!fileContent.toString().equals("")) {

fileContent.append("\r\n");

}

fileContent.append(line);

}

return fileContent;

} catch (IOException e) {

throw new RuntimeException("IOException occurred. ", e);

} finally {

IOUtils.close(reader);

}

}

/**

* write file

*

* @param filePath

* @param content

* @param append is append, if true, write to the end of file, else clear content of file and write into it

* @return return false if content is empty, true otherwise

* @throws RuntimeException if an error occurs while operator FileWriter

*/

public static boolean writeFile(String filePath, String content, boolean append) {

if (StringUtils.isEmpty(content)) {

return false;

}

FileWriter fileWriter = null;

try {

makeDirs(filePath);

fileWriter = new FileWriter(filePath, append);

fileWriter.write(content);

return true;

} catch (IOException e) {

throw new RuntimeException("IOException occurred. ", e);

} finally {

IOUtils.close(fileWriter);

}

}

/**

* write file

*

* @param filePath

* @param contentList

* @param append is append, if true, write to the end of file, else clear content of file and write into it

* @return return false if contentList is empty, true otherwise

* @throws RuntimeException if an error occurs while operator FileWriter

*/

public static boolean writeFile(String filePath, List contentList, boolean append) {

if (ListUtils.isEmpty(contentList)) {

return false;

}

FileWriter fileWriter = null;

try {

makeDirs(filePath);

fileWriter = new FileWriter(filePath, append);

int i = 0;

for (String line : contentList) {

if (i++ > 0) {

fileWriter.write("\r\n");

}

fileWriter.write(line);

}

return true;

} catch (IOException e) {

throw new RuntimeException("IOException occurred. ", e);

} finally {

IOUtils.close(fileWriter);

}

}

/**

* write file, the string will be written to the begin of the file

*

* @param filePath

* @param content

* @return

*/

public static boolean writeFile(String filePath, String content) {

return writeFile(filePath, content, false);

}

/**

* write file, the string list will be written to the begin of the file

*

* @param filePath

* @param contentList

* @return

*/

public static boolean writeFile(String filePath, List contentList) {

return writeFile(filePath, contentList, false);

}

/**

* write file, the bytes will be written to the begin of the file

*

* @param filePath

* @param stream

* @return

* @see {@link #writeFile(String, InputStream, boolean)}

*/

public static boolean writeFile(String filePath, InputStream stream) {

return writeFile(filePath, stream, false);

}

/**

* write file

*

* @param file the file to be opened for writing.

* @param stream the input stream

* @param append if true, then bytes will be written to the end of the file rather than the beginning

* @return return true

* @throws RuntimeException if an error occurs while operator FileOutputStream

*/

public static boolean writeFile(String filePath, InputStream stream, boolean append) {

return writeFile(filePath != null ? new File(filePath) : null, stream, append);

}

/**

* write file, the bytes will be written to the begin of the file

*

* @param file

* @param stream

* @return

* @see {@link #writeFile(File, InputStream, boolean)}

*/

public static boolean writeFile(File file, InputStream stream) {

return writeFile(file, stream, false);

}

/**

* write file

*

* @param file the file to be opened for writing.

* @param stream the input stream

* @param append if true, then bytes will be written to the end of the file rather than the beginning

* @return return true

* @throws RuntimeException if an error occurs while operator FileOutputStream

*/

public static boolean writeFile(File file, InputStream stream, boolean append) {

OutputStream o = null;

try {

makeDirs(file.getAbsolutePath());

o = new FileOutputStream(file, append);

byte data[] = new byte[1024];

int length = -1;

while ((length = stream.read(data)) != -1) {

o.write(data, 0, length);

}

o.flush();

return true;

} catch (FileNotFoundException e) {

throw new RuntimeException("FileNotFoundException occurred. ", e);

} catch (IOException e) {

throw new RuntimeException("IOException occurred. ", e);

} finally {

IOUtils.close(o);

IOUtils.close(stream);

}

}

/**

* move file

*

* @param sourceFilePath

* @param destFilePath

*/

public static void moveFile(String sourceFilePath, String destFilePath) {

if (TextUtils.isEmpty(sourceFilePath) || TextUtils.isEmpty(destFilePath)) {

throw new RuntimeException("Both sourceFilePath and destFilePath cannot be null.");

}

moveFile(new File(sourceFilePath), new File(destFilePath));

}

/**

* move file

*

* @param srcFile

* @param destFile

*/

public static void moveFile(File srcFile, File destFile) {

boolean rename = srcFile.renameTo(destFile);

if (!rename) {

copyFile(srcFile.getAbsolutePath(), destFile.getAbsolutePath());

deleteFile(srcFile.getAbsolutePath());

}

}

/**

* copy file

*

* @param sourceFilePath

* @param destFilePath

* @return

* @throws RuntimeException if an error occurs while operator FileOutputStream

*/

public static boolean copyFile(String sourceFilePath, String destFilePath) {

InputStream inputStream = null;

try {

inputStream = new FileInputStream(sourceFilePath);

} catch (FileNotFoundException e) {

throw new RuntimeException("FileNotFoundException occurred. ", e);

}

return writeFile(destFilePath, inputStream);

}

/**

* read file to string list, a element of list is a line

*

* @param filePath

* @param charsetName The name of a supported {@link java.nio.charset.Charset charset}

* @return if file not exist, return null, else return content of file

* @throws RuntimeException if an error occurs while operator BufferedReader

*/

public static List readFileToList(String filePath, String charsetName) {

File file = new File(filePath);

List fileContent = new ArrayList();

if (file == null || !file.isFile()) {

return null;

}

BufferedReader reader = null;

try {

InputStreamReader is = new InputStreamReader(new FileInputStream(file), charsetName);

reader = new BufferedReader(is);

String line = null;

while ((line = reader.readLine()) != null) {

fileContent.add(line);

}

return fileContent;

} catch (IOException e) {

throw new RuntimeException("IOException occurred. ", e);

} finally {

IOUtils.close(reader);

}

}

/**

* get file name from path, not include suffix

*

*

* getFileNameWithoutExtension(null) = null

* getFileNameWithoutExtension("") = ""

* getFileNameWithoutExtension(" ") = " "

* getFileNameWithoutExtension("abc") = "abc"

* getFileNameWithoutExtension("a.mp3") = "a"

* getFileNameWithoutExtension("a.b.rmvb") = "a.b"

* getFileNameWithoutExtension("c:\\") = ""

* getFileNameWithoutExtension("c:\\a") = "a"

* getFileNameWithoutExtension("c:\\a.b") = "a"

* getFileNameWithoutExtension("c:a.txt\\a") = "a"

* getFileNameWithoutExtension("/home/admin") = "admin"

* getFileNameWithoutExtension("/home/admin/a.txt/b.mp3") = "b"

*

*

* @param filePath

* @return file name from path, not include suffix

* @see

*/

public static String getFileNameWithoutExtension(String filePath) {

if (StringUtils.isEmpty(filePath)) {

return filePath;

}

int extenPosi = filePath.lastIndexOf(FILE_EXTENSION_SEPARATOR);

int filePosi = filePath.lastIndexOf(File.separator);

if (filePosi == -1) {

return (extenPosi == -1 ? filePath : filePath.substring(0, extenPosi));

}

if (extenPosi == -1) {

return filePath.substring(filePosi + 1);

}

return (filePosi < extenPosi ? filePath.substring(filePosi + 1, extenPosi) : filePath.substring(filePosi + 1));

}

/**

* get file name from path, include suffix

*

*

* getFileName(null) = null

* getFileName("") = ""

* getFileName(" ") = " "

* getFileName("a.mp3") = "a.mp3"

* getFileName("a.b.rmvb") = "a.b.rmvb"

* getFileName("abc") = "abc"

* getFileName("c:\\") = ""

* getFileName("c:\\a") = "a"

* getFileName("c:\\a.b") = "a.b"

* getFileName("c:a.txt\\a") = "a"

* getFileName("/home/admin") = "admin"

* getFileName("/home/admin/a.txt/b.mp3") = "b.mp3"

*

*

* @param filePath

* @return file name from path, include suffix

*/

public static String getFileName(String filePath) {

if (StringUtils.isEmpty(filePath)) {

return filePath;

}

int filePosi = filePath.lastIndexOf(File.separator);

return (filePosi == -1) ? filePath : filePath.substring(filePosi + 1);

}

/**

* get folder name from path

*

*

* getFolderName(null) = null

* getFolderName("") = ""

* getFolderName(" ") = ""

* getFolderName("a.mp3") = ""

* getFolderName("a.b.rmvb") = ""

* getFolderName("abc") = ""

* getFolderName("c:\\") = "c:"

* getFolderName("c:\\a") = "c:"

* getFolderName("c:\\a.b") = "c:"

* getFolderName("c:a.txt\\a") = "c:a.txt"

* getFolderName("c:a\\b\\c\\d.txt") = "c:a\\b\\c"

* getFolderName("/home/admin") = "/home"

* getFolderName("/home/admin/a.txt/b.mp3") = "/home/admin/a.txt"

*

*

* @param filePath

* @return

*/

public static String getFolderName(String filePath) {

if (StringUtils.isEmpty(filePath)) {

return filePath;

}

int filePosi = filePath.lastIndexOf(File.separator);

return (filePosi == -1) ? "" : filePath.substring(0, filePosi);

}

/**

* get suffix of file from path

*

*

* getFileExtension(null) = ""

* getFileExtension("") = ""

* getFileExtension(" ") = " "

* getFileExtension("a.mp3") = "mp3"

* getFileExtension("a.b.rmvb") = "rmvb"

* getFileExtension("abc") = ""

* getFileExtension("c:\\") = ""

* getFileExtension("c:\\a") = ""

* getFileExtension("c:\\a.b") = "b"

* getFileExtension("c:a.txt\\a") = ""

* getFileExtension("/home/admin") = ""

* getFileExtension("/home/admin/a.txt/b") = ""

* getFileExtension("/home/admin/a.txt/b.mp3") = "mp3"

*

*

* @param filePath

* @return

*/

public static String getFileExtension(String filePath) {

if (StringUtils.isBlank(filePath)) {

return filePath;

}

int extenPosi = filePath.lastIndexOf(FILE_EXTENSION_SEPARATOR);

int filePosi = filePath.lastIndexOf(File.separator);

if (extenPosi == -1) {

return "";

}

return (filePosi >= extenPosi) ? "" : filePath.substring(extenPosi + 1);

}

/**

* Creates the directory named by the trailing filename of this file, including the complete directory path required

* to create this directory.

*

*

* Attentions:

*

*

*

*

* @param filePath

* @return true if the necessary directories have been created or the target directory already exists, false one of

* the directories can not be created.

*

*

*

*

*

*/

public static boolean makeDirs(String filePath) {

String folderName = getFolderName(filePath);

if (StringUtils.isEmpty(folderName)) {

return false;

}

File folder = new File(folderName);

rhttp://eturn (folder.exists() && folder.isDirectory()) ? true : folder.mkdirs();

}

/**

* @param filePath

* @return

* @see #makeDirs(String)

*/

public static boolean makeFolders(String filePath) {

return makeDirs(filePath);

}

/**

* Indicates if this file represents a file on the underlying file system.

*

* @param filePath

* @return

*/

public static boolean isFileExist(String filePath) {

if (StringUtils.isBlank(filePath)) {

return false;

}

File file = new File(filePath);

return (file.exists() && file.isFile());

}

/**

* Indicates if this file represents a directory on the underlying file system.

*

* @param directoryPath

* @return

*/

public static boolean isFolderExist(String directoryPath) {

if (StringUtils.isBlank(directoryPath)) {

return false;

}

File dire = new File(directoryPath);

return (dire.exists() && dire.isDirectory());

}

/**

* delete file or directory

*

*

*

*

*

*

* @param path

* @return

*/

public static boolean deleteFile(String path) {

if (StringUtils.isBlank(path)) {

return true;

}

File file = new File(path);

if (!file.exists()) {

return true;

}

if (file.isFile()) {

return file.delete();

}

if (!file.isDirectory()) {

return false;

}

for (File f : file.listFiles()) {

if (f.isFile()) {

f.delete();

} else if (f.isDirectory()) {

deleteFile(f.getAbsolutePath());

}

}

return file.delete();

}

/**

* get file size

*

*

*

*

*

* @param path

* @return returns the length of this file in bytes. returns -1 if the file does not exist.

*/

public static long getFileSize(String path) {

if (StringUtils.isBlank(path)) {

return -1;

}

File file = new File(path);

http:// return (file.exists() && file.isFile() ? file.length() : -1);

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mybatis基于注解实现多表查询功能
下一篇:浅谈Spring Security 对于静态资源的拦截与放行
相关文章

 发表评论

暂时没有评论,来抢沙发吧~