值得分享的超全文件工具类FileUtil
程序员文章站
2022-06-14 13:42:31
结合以前的项目开发中遇到的不同的文件操作,在这里基本上提取出了所遇到过的文件操作的工具类。
1 我项目中用到的文件工具类
1 读取raw文件、file文件,drawab...
结合以前的项目开发中遇到的不同的文件操作,在这里基本上提取出了所遇到过的文件操作的工具类。
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<string, string> simpleproperty2hashmap(context context, string path) { try { inputstream is = getstream(context, path); return simpleproperty2hashmap(is); } catch (ioexception e) { e.printstacktrace(); } return new hashmap<string, string>(); } private static hashmap<string, string> simpleproperty2hashmap(inputstream in) throws ioexception { hashmap<string, string> hashmap = new hashmap<string, string>(); 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) : ""); } /** * 从文件的完整路径名(路径+文件名)中提取文件名(包含扩展名) <br> * 如:d:\path\file.ext --> file.ext * * @param _sfilepathname * @return */ public static string extractfilename(string _sfilepathname) { return extractfilename(_sfilepathname, file.separator); } /** * 从文件的完整路径名(路径+文件名)中提取文件名(包含扩展名) <br> * 如: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 * <ul> * read or write file * <li>{@link #readfile(string, string)} read file</li> * <li>{@link #readfiletolist(string, string)} read file to string list</li> * <li>{@link #writefile(string, string, boolean)} write file from string</li> * <li>{@link #writefile(string, string)} write file from string</li> * <li>{@link #writefile(string, list, boolean)} write file from string list</li> * <li>{@link #writefile(string, list)} write file from string list</li> * <li>{@link #writefile(string, inputstream)} write file</li> * <li>{@link #writefile(string, inputstream, boolean)} write file</li> * <li>{@link #writefile(file, inputstream)} write file</li> * <li>{@link #writefile(file, inputstream, boolean)} write file</li> * </ul> * <ul> * operate file * <li>{@link #movefile(file, file)} or {@link #movefile(string, string)}</li> * <li>{@link #copyfile(string, string)}</li> * <li>{@link #getfileextension(string)}</li> * <li>{@link #getfilename(string)}</li> * <li>{@link #getfilenamewithoutextension(string)}</li> * <li>{@link #getfilesize(string)}</li> * <li>{@link #deletefile(string)}</li> * <li>{@link #isfileexist(string)}</li> * <li>{@link #isfolderexist(string)}</li> * <li>{@link #makefolders(string)}</li> * <li>{@link #makedirs(string)}</li> * </ul> * * @author <a href="http://www.trinea.cn" rel="external nofollow" target="_blank">trinea</a> 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 </code>charset<code>} * @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<string> 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<string> 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 <code>true</code>, 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 <code>true</code>, 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 </code>charset<code>} * @return if file not exist, return null, else return content of file * @throws runtimeexception if an error occurs while operator bufferedreader */ public static list<string> readfiletolist(string filepath, string charsetname) { file file = new file(filepath); list<string> filecontent = new arraylist<string>(); 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 * * <pre> * 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" * </pre> * * @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 * * <pre> * 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" * </pre> * * @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 * * <pre> * 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" * </pre> * * @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 * * <pre> * 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" * </pre> * * @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. <br/> * <br/> * <ul> * <strong>attentions:</strong> * <li>makedirs("c:\\users\\trinea") can only create users folder</li> * <li>makefolder("c:\\users\\trinea\\") can create trinea folder</li> * </ul> * * @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. * <ul> * <li>if {@link fileutils#getfoldername(string)} return null, return false</li> * <li>if target directory already exists, return true</li> * <li>return {@link file#makefolder}</li> * </ul> */ public static boolean makedirs(string filepath) { string foldername = getfoldername(filepath); if (stringutils.isempty(foldername)) { return false; } file folder = new file(foldername); return (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 * <ul> * <li>if path is null or empty, return true</li> * <li>if path not exist, return true</li> * <li>if path exist, delete recursion. return true</li> * <ul> * * @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 * <ul> * <li>if path is null or empty, return -1</li> * <li>if path exist and it is a file, return file size, else return -1</li> * <ul> * * @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); return (file.exists() && file.isfile() ? file.length() : -1); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。