下面是一些根據常用Java類進行組裝的對文件進行操作的類,平時,我更喜歡使用Jodd.io中提供的一些對文件的操作類,裡面的方法寫的簡單易懂。
其中jodd中提供的JavaUtil類中提供的方法足夠我們使用,裡面的方法寫的非常簡練,例如append,read等方法,封裝更好,更符合面向對象,
這裡面我寫的一些方法可多都是模仿jodd,從裡面進行抽取出來的。
/**
* 獲取路徑文件夾下的所有文件
* @param path
* @return
*/
public static File[] getKeywordFiles(String path) {
File dir = new File(path);
if (!dir.exists())
return null;
File[] fs = dir.listFiles();
return fs;
}
/**
* 刪除文件夾 param folderPath 文件夾完整絕對路徑
*/
private static void delFolder(String folderPath) {
try {
delAllFile(folderPath); // 刪除完裡面所有內容
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
myFilePath.delete(); // 刪除空文件夾
} catch (Exception e) {
log.error(e);
}
}
/**
* 讀取一個文件
* @param filePathAndName
* @return
* @throws IOException
*/
public static List<String> readFile(String filePathAndName)
throws IOException {
FileInputStream fis = new FileInputStream(filePathAndName);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
LineNumberReader lnr = new LineNumberReader(br);
List<String> returnValue = new ArrayList<String>();
int cnt = 0;
while (true) {
cnt++;
String tempStr = lnr.readLine();
if (tempStr == null)
break;
if (tempStr.length() < 2)
continue;
returnValue.add(tempStr);
}
lnr.close();
br.close();
isr.close();
fis.close();
return returnValue;
}
/**
* 讀取一個文件,並排重後返回
*/
public static List<String> readFileNoDup(String filePathAndName)
throws IOException {
FileInputStream fis = new FileInputStream(filePathAndName);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
LineNumberReader lnr = new LineNumberReader(br);
Set<String> set = new HashSet<String>();
while (true) {
String tempStr = lnr.readLine();
if (tempStr == null)
break;
if (tempStr.length() < 2)
continue;
set.add(tempStr.trim());
}
lnr.close();
br.close();
isr.close();
fis.close();
List<String> returnValue = new ArrayList<String>(set.size());
returnValue.addAll(set);
return returnValue;
}
/**
* 添加內容到指定文件 如果該文件不存在,則創建並添加內容 如果該文件已存在,則添加內容到已有內容最後
* flag為true,則向現有文件中添加內容,否則覆蓋原有內容
*/
public static void writeFile(String filePathAndName, String fileContent,
boolean flag) throws IOException {
if (null == fileContent || fileContent.length() < 1)
return;
File file = new File(filePathAndName);
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(filePathAndName, flag);
OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
osw.write(fileContent + "\r\n");
osw.flush();
osw.close();
}
/**
* 添加內容到指定文件 如果該文件不存在,則創建並添加內容 如果該文件已存在,則添加內容到已有內容最後
* flag為true,則向現有文件中添加內容,否則覆蓋原有內容
*/
public static void writeFile(String filePathAndName,
List<String> fileContent, boolean flag) throws IOException {
File file = new File(filePathAndName);
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(filePathAndName, flag);
OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
for (String temp : fileContent)
osw.write(temp + "\r\n");
osw.flush();
osw.close();
}
/**
* 添加內容到指定文件 如果該文件不存在,則創建並添加內容 如果該文件已存在,則添加內容到已有內容最後
* flag為true,則向現有文件中添加內容,否則覆蓋原有內容
*/
public static void writeFile(String filePath,String filename,
List<String> fileContent, boolean flag) throws IOException {
File file = new File(filePath);
if(!file.exists()){
boolean tempFlag = file.mkdirs();
if(!tempFlag){
log.error("文件夾"+filePath+"創建失敗");
return;
}
}
file = new File(filePath,filename);
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(filePath+filename, flag);
OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
for (String temp : fileContent)
osw.write(temp + "\r\n");
osw.flush();
osw.close();
}
--------------------------------------分割線 --------------------------------------
編寫高質量代碼 改善Java程序的151個建議 PDF高清完整版 http://www.linuxidc.com/Linux/2014-06/103388.htm
Java 8簡明教程 http://www.linuxidc.com/Linux/2014-03/98754.htm
Java對象初始化順序的簡單驗證 http://www.linuxidc.com/Linux/2014-02/96220.htm
Java對象值傳遞和對象傳遞的總結 http://www.linuxidc.com/Linux/2012-12/76692.htm
Java對象序列化ObjectOutputStream和ObjectInputStream示例 http://www.linuxidc.com/Linux/2012-08/68360.htm
--------------------------------------分割線 --------------------------------------