歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java中IO寫文件工具類

下面是一些根據常用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

--------------------------------------分割線 --------------------------------------

Copyright © Linux教程網 All Rights Reserved