Java File常見類小計

來源:互聯網
上載者:User

Java檔案操作,真格是暈是我的,和其他語言或者指令碼來說,這代碼量確實大了點。希望java7以後會越來越方便

package com.tf.initdata.util;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.RandomAccessFile;import java.util.ArrayList;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class FileHelper {private static final Log logger = LogFactory.getLog(FileHelper.class);/** * 重新命名檔案 * */public static void renamefile(File file,String descfilename)  {try{file.renameTo(new File(descfilename));}catch(Exception e){logger.error("FTP 重新命名檔案出錯.....");}}/** * 擷取檔案有多少行(文本裡面空行也會算) * */public static long getFileLines(File file) throws IOException{          RandomAccessFile raf = new RandomAccessFile(file, "r");          long size = raf.length();         if(size==0){        return 0;        }        raf.seek(0);          long lines = 0L;          int len = size < 32768 ? (int)size : 32768;         long c = size/len;        byte[] buffer = new byte[len];          for(int i=0;i<c;i++){              raf.read(buffer);              for(int j=0;j<len;j++){                  if(buffer[j] == '\n'){                      lines++;                  }              }          }          int rest = (int)(size%len);          raf.read(buffer,0, rest);          for(int j=0;j<rest;j++){              if(buffer[j] == '\n'){                  lines++;              }          }          raf.close();          return lines;      }  /** * 判斷該檔案最後一行是否又end標記(文本裡面空行也會算) * */public static String readLastLine(File file, String charset) throws IOException {    if (!file.exists() || file.isDirectory() || !file.canRead()) {      return null;    }    RandomAccessFile raf = null;    try {      raf = new RandomAccessFile(file, "r");      long len = raf.length();      if (len == 0L) {        return "";      } else {        long pos = len - 1;        while (pos > 0) {          pos--;          raf.seek(pos);          if (raf.readByte() == '\n') {            break;          }        }        if (pos == 0) {          raf.seek(0);        }        byte[] bytes = new byte[(int) (len - pos)];        raf.read(bytes);        if (charset == null || charset.isEmpty()) {          return new String(bytes);        } else {          return new String(bytes, charset);        }      }    } catch (FileNotFoundException e) {    } finally {      if (raf != null) {        try {          raf.close();        } catch (Exception e2) {        }      }    }    return null;  }/** * 檔案複製 * copyflag=0 複製 copyflag=1 剪下 * */public static void copyFile(File src, File dest,int copyflag)throws Exception {BufferedInputStream reader = null;BufferedOutputStream writer = null;try {reader = new BufferedInputStream(new FileInputStream(src));writer = new BufferedOutputStream(new FileOutputStream(dest));byte[] buff = new byte[reader.available()];while ((reader.read(buff)) != -1) {writer.write(buff);}if(copyflag == 1){src.delete();}} catch (Exception e) {throw e;} finally {writer.flush();writer.close();reader.close();}if(copyflag == 1){src.delete();}}/** * 將一個目錄下所有合格檔案,剪下到另外一個檔案夾裡 * */public static void moveFileByModule(String srcDirectory,String destDirectory,String modulefilename)throws Exception{File srcFolder = new File(srcDirectory);File[] srcfiles = srcFolder.listFiles();for (File file : srcfiles){if(file.isFile()){String fileName = file.getName();if(fileName.startsWith(modulefilename)){String pathname = destDirectory+File.separator+fileName;File dest = new File(pathname);copyFile(file, dest,1);}}}}/** * 判斷指定目錄中是否包含檔案 * */public static boolean fileExists(String directory,String filename){File directFile = new File(directory);if (directFile.exists() && directFile.isDirectory()) {      File[] files = directFile.listFiles();    for(File file:files)    {    if(filename.equals(file.getName())){    return true;    }    }} return false;}/** * 判斷指定目錄中是否包含某檔案名稱開頭的檔案 * */public static boolean fileModuleExists(String directory,String filename){File directFile = new File(directory);if (directFile.exists() && directFile.isDirectory()) {      File[] files = directFile.listFiles();    for(File file:files)    {    if(file.getName().startsWith(filename)){    return true;    }    }} return false;}/** * 取得指定檔案名稱開頭的檔案清單 * */public static List<File> getFilesByModuleName(String directory,String filename){List<File> files = new ArrayList<File>();File directFile = new File(directory);if (directFile.exists() && directFile.isDirectory()) {File[] filest = directFile.listFiles();    for(File file:filest)    {    if(file.getName().startsWith(filename)){    files.add(file);    }    }}return files;}public static void deleteFile(File filewithPath){if(filewithPath.exists() && filewithPath.isFile()){if(filewithPath.canExecute()){filewithPath.delete();}}}/*public static void main(String args[]) throws Exception{File hygcl = new File("hygcl201203010001.txt");String endStr = readLastLine(hygcl,"");System.out.println(endStr);}*/}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.