因爲一直在使用Java file功能,可是老是很混亂,今天將Java File的全部功能作一個總結。java
Java文件操做我我的認爲重要的問題有:
a:如何跨平臺問題
b:文件編碼問題,尤爲是多語言平臺狀況下如何正常工做。
c:文件讀寫效率、操做效率
d:文件加密和文件安全
e:文件快速檢索,強烈建議使用lence進行文件檢索及文件管理。
如下是本人作的一些整理:
一:創建文件
File file1 = new File ("C://temp//myNote.txt"); // in Windows 這是windows文件系統下的方法
File file2 = new File ("/tmp/myNote.txt"); // in Linux/Unix unix文件系統的方法
最安全的創建文件的方法:
File myFile = new File("C:" + File.separator + "jdk1.5.0" + File.separator, "File.java");
File.separator 是文件路徑符號。
System.out.println(myFile.getName());//取得文件名稱的方法
System.out.println(myFile.getPath());//取得文件路徑的方法
System.out.println(myFile.isAbsolute());//判斷文件是否完整
System.out.println(myFile.getParent());//取得文件的根目錄
System.out.println(myFile.exists());//判斷文件是否存在
System.out.println(myFile.isDirectory());//判斷是不是目錄
System.out.println(myFile.isFile());//判斷是不是文件
System.out.println(myFile.isHidden());//判斷是不是隱藏文件
System.out.println(myFile.canRead());//判斷是否可讀
System.out.println(myFile.canWrite());//判斷是否可寫
File myFile_A = new File("C:" + File.separator);
for(String s: myFile_A.list()){//讀取某個目錄下全部文件
System.out.println(s);
}
File myFile_C=new File("d:/test.txt");
System.out.println(new Date(myFile_C.lastModified()));//最後一次編輯時間
myFile_C.renameTo(new File("c:/text.txt.bak"));//從命名
myFile_C.setReadOnly();//設置爲只讀
二:文件過濾方法
java提供了很好的文件過濾藉口:FilenameFilter 過濾之後的文件能夠用listFiles顯示出來。效率仍是很是高的。
import java.io.File;
import java.io.FilenameFilter;
import java.util.Date;
/**
* 文件過濾器過濾類
* @author fb
*/
class FileListFilter implements FilenameFilter {
private String name;
private String extension;
public FileListFilter(String name, String extension) {
this.name = name;
this.extension = extension;
}
public boolean accept(File directory, String filename) {
boolean fileOK = true;
if (name != null) {
fileOK = filename.startsWith(name);
}
if (extension != null) {
fileOK = filename.endsWith('.' + extension);
}
return fileOK;
}
}
測試方法:
import java.io.File;
import java.io.FilenameFilter;
import java.util.Date;
/**
* 文件過濾器 運行函數
* @author fb
*/
public class Run_FileListFilter {
public static void main(String[] args) {
File myDir = new File("d:/");
FilenameFilter select = new FileListFilter("F", "txt");
File[] contents = myDir.listFiles(select);
for (File file : contents) {
System.out.println(file + " is a " + (file.isDirectory() ? "directory" : "file")
+ " last modified on/n" + new Date(file.lastModified()));
}
}
}
三:創建目錄、文件、臨時文件、刪除文件或目錄
import java.io.File;
import java.io.IOException;
public class MakeDir {
public static void main(String[] args) {
File myFile=new File("D:/myFubin/");
if(myFile.mkdir()){//單級目錄
System.out.println("創建目錄成功");
}else{
System.out.println("創建目錄失敗");
}
File myFile_A=new File("D:/myFubin/test/");
if(myFile_A.mkdirs()){//多級目錄
System.out.println("創建目錄成功");
}else{
System.out.println("創建目錄失敗");
}
File file = new File("d://myFubin//test.txt");
try {
file.createNewFile();//創建空文件
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(file.canRead());
if(file.delete()){//刪除文件或刪除目錄
//刪除文件的另一個方法:file.deleteOnExit() 這種方法是在程序退出的時候將文件刪除
System.out.println("刪除成功");
}else{
System.out.println("刪除失敗");
}
try {
File tmp = File.createTempFile("foo", "tmp");//創建臨時文件
System.out.println("剛纔創建的臨時文件在:" + tmp.getCanonicalPath());
} catch (IOException e) {
e.printStackTrace();
}
}
}windows
import java.io.File;
/**
* @author fb www.cujava.com
* 文件操做裏Java 1.6 新功能:查詢磁盤空間
*/
public class SpaceChecker {
public static void main(String[] args) {
File[] roots = File.listRoots();//取得全部的根,若是是windows系統那麼將取得全部的磁盤
for (int i = 0; i < roots.length; i++) {
System.out.println(roots[i]);
System.out.println("Free space = " + roots[i].getFreeSpace());
System.out.println("Usable space = " + roots[i].getUsableSpace());
System.out.println("Total space = " + roots[i].getTotalSpace());
System.out.println();
}
}
}安全