在编写程序的过程中,时常要更改一些包含某个代码的文件,特别是像我这种将code到处copy,而不愿意采用那些精巧的框架的人。要修改某个特定的功能,就要找到调用这段代码的那些文件,这时,我就需要查找某个目录下的java、jsp、js文件。
这个类就是实现对所有子目录下的指定文本文件进行全文检索开发的,虽然没有什么性能可言,但是简单。
对于java文件,我很少写注释,除非怀疑自己以后看不懂。但是通常命名还是比较规范的。
良好的习惯,就是将一些常用的功能打包成一个类,
/**
创建人:worldrisestar
说明:用于加载系统资源,可以从系统文件、数据库加载参数。
使用缓存:IniFile(localeKey,cacheName)
如不需要缓冲: 1) 不排序使用IniFile(localeKey) 或IniFile(localeKey,false)
2) 需要排序IniFile(localeKey,true)
*/
package com.worldrisestar.file;
import java.util.Properties;
import java.util.List;
import java.util.ArrayList;
import java.util.Date;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileReader;
import java.text.DecimalFormat;
import java.nio.channels.FileChannel;
import java.io.File;
import com.jgwang.cache.SysCache;
import com.jgwang.ICachable;
import com.jgwang.util.SysDate;
public class FolderFile
{
static java.text.DecimalFormat formater = (DecimalFormat)java.text.DecimalFormat.getInstance();
public String folderName = ""; 习惯了不用setter、getter,如果预估该属性要被预处理,那么最好加上set、get
public String relativePath = ""; 使用setter、getter是良好的习惯
public String absolutePath = "";
public FolderFile[] subFolders;
public FolderFile()
{
}
public static void fileFastCopy(File s, File t) {
FileInputStream fi = null;
FileOutputStream fo = null;
FileChannel in = null;
FileChannel out = null;
try {
fi = new FileInputStream(s);
fo = new FileOutputStream(t);
in = fi.getChannel(); //得到对应的文件通道
out = fo.getChannel(); //得到对应的文件通道
in.transferTo(0, in.size(), out); //连接两个通道,并且从in通道读取,然后写入out通道
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fi.close();
in.close();
fo.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void fileFastCopy(String from, String to) {
File s = new File(from);
File t = new File(to);
fileFastCopy( s, t);
}
删除一个目录,写完后发现java本身类库就带了这个功能,搞笑。
/*public void deleteDir(String dir)
{
File df = new File(dir);
if(df.isDirectory())
{
File[] files = df.listFiles();
if(files.length==0)
df.delete();
for(int i=0; i<files.length; i++)
{
if(files[i].isDirectory())
deleteDir(files[i].getAbsolutePath().replace('/','\\'));
else
files[i].delete();
}
}
else
df.delete();
}*/
// 删除某个目录及目录下的所有子目录和文件
public static boolean deleteFolderFile(String dir) {
return deleteFolderFile(new File(dir));
}
public static boolean deleteFolderFile(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i