FileUtil

作者:  最后修改:2013年10月28日  浏览数:622

FileUtil

         文件操作工具类。

String normalizePath(String path) 

  将文件路径规则化,去掉其中多余的/\,去掉可能造成文件信息泄漏的../

代码实例

String path = FileUtil.normalizePath("C:\\Documents and Settings\\Administrator\\Desktop\\Framework2.x\\JAVA\\com\\zving\\framework\\utility");  //输出结果:C:/Documents and Settings/Administrator/Desktop/Framework2.x/JAVA/com/zving/framework/utility

 

String path = FileUtil.normalizePath("../JAVA/com/zving/framework/utility"); //结果:/JAVA/com/zving/framework/utility

  

File normalizeFile(File f) 

  将文件路径规则化,去掉其中多余的/\,去掉可能造成文件信息泄漏的../

代码实例

File f = new File("d:\\Test.txt");

File f2 = FileUtil.normalizeFile(f);

System.out.println(f2.getAbsolutePath());

//输出结果:d:\Test.txt

  

String getExtension(String fileName) 

  得到文件名中的扩展名,不带圆点。

代码实例

String ext = FileUtil.getExtension("Test.txt");

  

boolean writeText(String fileName, String content) 

  以全局编码将指定内容写入指定文件。

代码实例

boolean b = FileUtil.writeText("F:\\Test.txt", "高山流水");

  

boolean writeText(String fileName, String content, String encoding) 

  以指定编码将指定内容写入指定文件。

代码实例

FileUtil.writeText("F:\\Test1.txt", "高山流水","ISO-8859-1");  //出现乱码

FileUtil.writeText("F:\\Test2.txt", "高山流水","utf-8");

  

boolean writeText(String fileName, String content, String encoding, boolean bomFlag)   

  以指定编码将指定内容写入指定文件,如果编码为UTF-8bomFlagtrue,则在文件头部加入3字节的BOM

代码实例

FileUtil.writeText("F:\\Test1.txt", "Hello ZVING","UTF-8",true);

FileUtil.writeText("F:\\Test2.txt", "高山流水","utf-8",false);

  

byte[] readByte(String fileName) 

  以二进制方式读取文件。

代码实例

byte b[] = FileUtil.readByte("F:/Test1.txt");

  

byte[] readByte(File f) 

  以二进制方式读取文件。

代码实例

File f = new File("F:/Test1.txt");

byte b[] = FileUtil.readByte(f);

  

byte[] readByte(InputStream is) 

  读取指定流,并转换为二进制数组。

代码实例

File f = new File("F:/Test1.txt");

try {

   InputStream in = new FileInputStream(f);    

   byte b[] = FileUtil.readByte(in);

   System.out.println(b.length);

} catch (FileNotFoundException e) {

   e.printStackTrace();

}

  

boolean writeByte(String fileName, byte[] b) 

  将二进制数组写入指定文件。

代码实例

byte b[] = "hello world".getBytes();

FileUtil.writeByte("F:/Test2.txt", b);

  

boolean writeByte(File f, byte[] b) 

  将二进制数组写入指定文件。

代码实例

File f = new File("F:/Test1.txt");

byte b[] = "hello world".getBytes();

FileUtil.writeByte(f, b);

  

String readText(File f) 

  以全局编码读取指定文件中的文本。

代码实例

File f = new File("F:/Test1.txt");

String content = FileUtil.readText(f);

  

String readText(File f, String encoding) 

  以指定编码读取指定文件中的文本。

代码实例

File f = new File("F:/Test1.txt");

String content = FileUtil.readText(f,"gbk");

  

String readText(InputStream is, String encoding) 

  以指定编码读取流中的文本,如果是UTF8则要判断有没有BOM

代码实例

File f = new File("F:/Test1.txt");

InputStream in = new FileInputStream(f);

String content = FileUtil.readText(in,"gbk");

  

  

String readText(String fileName) 

  以全局编码读取指定文件中的文本。

代码实例

String content = FileUtil.readText("F:/Test2.txt");

  

String readText(String fileName, String encoding) 

  以指定编码读取指定文件中的文本。

代码实例

String content = FileUtil.readText("F:/Test1.txt","gbk");

  

String readURLText(String urlPath) 

  以全局编码读取指定URL中的文本。

代码实例

String content = FileUtil.readURLText("http://www.baidu.com");

  

String readURLText(String urlPath, String encoding) 

  以指定编码读取指定URL中的文本。

代码实例

String content = FileUtil.readURLText("http://www.baidu.com","GBK");

  

boolean delete(String path) 

  删除文件,不管路径是文件还是文件夹都删掉 删除文件夹时会自动删除子文件夹。

代码实例

   FileUtil.delete("F:/Test2.txt");

   FileUtil.delete("F:/test");

  

boolean delete(File f) 

  删除文件,不管路径是文件还是文件夹都删掉 删除文件夹时会自动删除子文件夹。

代码实例

File f = new File("F:/test.txt");

File f2 = new File("F:/test");

FileUtil.delete(f);

FileUtil.delete(f2);

 

  

boolean deleteDir(File dir) 

  删除文件夹及其子文件夹。

代码实例

方法私有。

  

boolean mkdir(String path) 

  创建文件夹。

代码实例

FileUtil.mkdir("F:/test/test");

  

boolean exists(String path)

  判断文件或文件夹是否存在。

代码实例

boolean b = FileUtil.exists("F:/test/test");

  

boolean deleteEx(String fileName) 

  通配符方式删除指定目录下的文件或文件夹 文件名支持使用正则表达式(文件路径不支持正则表达式)。

代码实例

 

 

  

boolean deleteFromDir(String dirPath) 

  删除文件夹里面的所有文件但不删除自己本身。

代码实例

boolean b = FileUtil.deleteFromDir("F:/test");

  

boolean deleteFromDir(File dir) 

  删除文件夹里面的所有文件和子文件夹但不删除自己本身。

代码实例

File f = new File("F:/test");

boolean b = FileUtil.deleteFromDir(f);

  

boolean copy(String oldPath, String newPath, FileFilter filter) 

  从指定位置复制文件到另一个文件夹,复制时不符合filter条件的不复制。

代码实例

@Test

public void testUtil(){

   FileFilter filter = new FileFilter(){

     @Override

     public boolean accept(File pathname) {

        String fileName = pathname.getName().toLowerCase();

        if(fileName.endsWith(".java")){

           return true;

        }

        return false;

     }

   };

   FileUtil.copy("F:/test/t1", "F:/test/t2", filter);

}

  

boolean copy(String oldPath, String newPath) 

  从指定位置复制文件到另一个文件夹。

代码实例

boolean b = FileUtil.copy("F:/test/a/a.txt", "F:/test/b");

  

boolean copy(File oldFile, String newPath) 

  从指定位置复制文件到另一个文件夹。

代码实例

File f = new File("F:/test/a/a.txt");

boolean b = FileUtil.copy(f, "F:/test/b");

 

File f = new File("F:/test/a/");

boolean b = FileUtil.copy(f, "F:/test/b");

  

private static boolean copyFile(File oldFile, String newPath) 

  复制单个文件。

代码实例

 

  

private static boolean copyDir(File oldDir, String newPath) 

  复制整个文件夹内容。

代码实例

 

  

boolean move(String oldPath, String newPath) 

  移动文件到指定目录。

代码实例

boolean b = FileUtil.move("F:/test/b/a.txt", "F:/test/a");

  

boolean move(File oldFile, String newPath) 

  移动文件到指定目录。

代码实例

File f = new File("F:/test/b/b.txt");

boolean b = FileUtil.move(f, "F:/test/a");

  

void serialize(Serializable obj, String fileName) 

  将可序列化对象序列化并写入指定文件。

代码实例

class User implements Serializable {

   private static final long serialVersionUID = 1L;

   private String name;

   private int age;

  

   public User(){};

   public User(String name,int age){

     this.name = name;

     this.age = age;

   }

 

   public String getName() {

     return name;

   }

   public void setName(String name) {

     this.name = name;

   }

 

   public int getAge() {

     return age;

   }

   public void setAge(int age) {

     this.age = age;

   };

}

 

Serializable s = new User("张三",21);

FileUtil.serialize(s, "F:/test/a/a.txt");

 

  

byte[] serialize(Serializable obj) 

  将可序列化对象序列化并返回二进制数组。

代码实例

public class UtilTest {

   @Test

   public void testGetFormat(){

     Serializable s = new User("张三",21);

     byte b[] = FileUtil.serialize(s);

     System.out.println(b.length);

   }

}

 

class User implements Serializable {

   private static final long serialVersionUID = 1L;

   private String name;

   private int age;

  

   public User(){};

   public User(String name,int age){

     this.name = name;

     this.age = age;

   }

 

   public String getName() {

     return name;

   }

   public void setName(String name) {

     this.name = name;

   }

 

   public int getAge() {

     return age;

   }

   public void setAge(int age) {

     this.age = age;

   };

}

  

Object unserialize(String fileName) 

  从指定文件中反序列化对象。

代码实例

User u = (User)FileUtil.unserialize("F:/test/a/a.txt");

System.out.println(u.getName());

  

Object unserialize(byte[] bs) 

  从二进制数组中反序列化对象。

代码实例

User user = new User("zhang3",23);

byte b[] = FileUtil.serialize(user);

User u = (User)FileUtil.unserialize(b);

  

byte[] mapToBytes(Mapx<?, ?> map) 

  将一个Mapx高性能序列化键值只能为字符串。

代码实例

Mapx<String,String> mapx = new Mapx<String,String>();

mapx.put("001", "zhangsan");

mapx.put("002", "lisi");

byte b[] = FileUtil.mapToBytes(mapx);

  

Mapx<Object, Object> bytesToMap(byte[] arr) 

  将一个二进制数组反序列化为Mapx

代码实例

Mapx<String,String> mapx = new Mapx<String,String>();

mapx.put("001", "zhangsan");

mapx.put("002", "lisi");

byte b[] = FileUtil.mapToBytes(mapx);

Mapx<Object,Object> map = FileUtil.bytesToMap(b);