当前位置:  编程技术>java/j2ee

java文件操作工具类分享(file文件工具类)

    来源: 互联网  发布时间:2014-11-02

    本文导语:  代码如下:import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import jav...

代码如下:

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.text.DateFormat;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Locale;
import java.util.StringTokenizer;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

/**
 *
 * @author IBM
 *
 */

public class FileUtil {

 public static String dirSplit = "\";//linux windows
 /**
  * save file accroding to physical directory infomation
  *
  * @param physicalDir
  *            physical directory
  * @param fname
  *            file name of destination
  * @param istream
  *            input stream of destination file
  * @return
  */

 public static boolean SaveFileByPhysicalDir(String physicalPath,
   InputStream istream) {

  boolean flag = false;
  try {
   OutputStream os = new FileOutputStream(physicalPath);
   int readBytes = 0;
   byte buffer[] = new byte[8192];
   while ((readBytes = istream.read(buffer, 0, 8192)) != -1) {
    os.write(buffer, 0, readBytes);
   }
   os.close();
   flag = true;
  } catch (FileNotFoundException e) {

   e.printStackTrace();
  } catch (IOException e) {

   e.printStackTrace();
  }
  return flag;
 }

 public static boolean CreateDirectory(String dir){
  File f = new File(dir);
  if (!f.exists()) {
   f.mkdirs();
  }
  return true;
 }

 
 public static void saveAsFileOutputStream(String physicalPath,String content) {
    File file = new File(physicalPath);
    boolean b = file.getParentFile().isDirectory();
    if(!b){
     File tem = new File(file.getParent());
     // tem.getParentFile().setWritable(true);
     tem.mkdirs();// 创建目录
    }
    //Log.info(file.getParent()+";"+file.getParentFile().isDirectory());
    FileOutputStream foutput =null;
    try {
     foutput = new FileOutputStream(physicalPath);

     foutput.write(content.getBytes("UTF-8"));
     //foutput.write(content.getBytes());
    }catch(IOException ex) {
     ex.printStackTrace();
     throw new RuntimeException(ex);
    }finally{
     try {
      foutput.flush();
      foutput.close();
     }catch(IOException ex){
      ex.printStackTrace();
      throw new RuntimeException(ex);
     }
    }
     //Log.info("文件保存成功:"+ physicalPath);
   }



  /**
     * COPY文件
     * @param srcFile String
     * @param desFile String
     * @return boolean
     */
    public boolean copyToFile(String srcFile, String desFile) {
        File scrfile = new File(srcFile);
        if (scrfile.isFile() == true) {
            int length;
            FileInputStream fis = null;
            try {
                fis = new FileInputStream(scrfile);
            }
            catch (FileNotFoundException ex) {
                ex.printStackTrace();
            }
            File desfile = new File(desFile);

            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(desfile, false);
            }
            catch (FileNotFoundException ex) {
                ex.printStackTrace();
            }
            desfile = null;
            length = (int) scrfile.length();
            byte[] b = new byte[length];
            try {
                fis.read(b);
                fis.close();
                fos.write(b);
                fos.close();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            scrfile = null;
            return false;
        }
        scrfile = null;
        return true;
    }

    /**
     * COPY文件夹
     * @param sourceDir String
     * @param destDir String
     * @return boolean
     */
    public boolean copyDir(String sourceDir, String destDir) {
        File sourceFile = new File(sourceDir);
        String tempSource;
        String tempDest;
        String fileName;
        File[] files = sourceFile.listFiles();
        for (int i = 0; i < files.length; i++) {
            fileName = files[i].getName();
            tempSource = sourceDir + "/" + fileName;
            tempDest = destDir + "/" + fileName;
            if (files[i].isFile()) {
                copyToFile(tempSource, tempDest);
            } else {
                copyDir(tempSource, tempDest);
            }
        }
        sourceFile = null;
        return true;
    }

    /**
     * 删除指定目录及其中的所有内容。
     * @param dir 要删除的目录
     * @return 删除成功时返回true,否则返回false。
     */
    public boolean deleteDirectory(File dir) {
        File[] entries = dir.listFiles();
        int sz = entries.length;
        for (int i = 0; i < sz; i++) {
            if (entries[i].isDirectory()) {
                if (!deleteDirectory(entries[i])) {
                    return false;
                }
            } else {
                if (!entries[i].delete()) {
                    return false;
                }
            }
        }
        if (!dir.delete()) {
            return false;
        }
        return true;
    }

   

    /**
     * File exist check
     *
     * @param sFileName File Name
     * @return boolean true - exist

     *                 false - not exist
     */
    public static boolean checkExist(String sFileName) {

     boolean result = false;

       try {
        File f = new File(sFileName);

        //if (f.exists() && f.isFile() && f.canRead()) {
    if (f.exists() && f.isFile()) {
      result = true;
    } else {
      result = false;
    }
    } catch (Exception e) {
         result = false;
    }

        /* return */
        return result;
    }

    /**
     * Get File Size
     *
     * @param sFileName File Name
     * @return long File's size(byte) when File not exist return -1
     */
    public static long getSize(String sFileName) {

        long lSize = 0;

        try {
      File f = new File(sFileName);

              //exist
      if (f.exists()) {
       if (f.isFile() && f.canRead()) {
        lSize = f.length();
       } else {
        lSize = -1;
       }
              //not exist
      } else {
          lSize = 0;
      }
    } catch (Exception e) {
         lSize = -1;
    }
    /* return */
    return lSize;
    }

 /**
  * File Delete
  *
  * @param sFileName File Nmae
  * @return boolean true - Delete Success

  *                 false - Delete Fail
  */
    public static boolean deleteFromName(String sFileName) {

        boolean bReturn = true;

        try {
            File oFile = new File(sFileName);

           //exist
           if (oFile.exists()) {
            //Delete File
            boolean bResult = oFile.delete();
            //Delete Fail
            if (bResult == false) {
                bReturn = false;
            }

            //not exist
           } else {

           }

   } catch (Exception e) {
    bReturn = false;
   }

   //return
   return bReturn;
    }

 /**
  * File Unzip
  *
  * @param sToPath  Unzip Directory path
  * @param sZipFile Unzip File Name
  */
 @SuppressWarnings("rawtypes")
public static void releaseZip(String sToPath, String sZipFile) throws Exception {

  if (null == sToPath ||("").equals(sToPath.trim())) {
    File objZipFile = new File(sZipFile);
    sToPath = objZipFile.getParent();
  }
  ZipFile zfile = new ZipFile(sZipFile);
  Enumeration zList = zfile.entries();
  ZipEntry ze = null;
  byte[] buf = new byte[1024];
  while (zList.hasMoreElements()) {

    ze = (ZipEntry) zList.nextElement();
    if (ze.isDirectory()) {
     continue;
    }

    OutputStream os =
    new BufferedOutputStream(
    new FileOutputStream(getRealFileName(sToPath, ze.getName())));
    InputStream is = new BufferedInputStream(zfile.getInputStream(ze));
    int readLen = 0;
    while ((readLen = is.read(buf, 0, 1024)) != -1) {
     os.write(buf, 0, readLen);
    }
    is.close();
    os.close();
  }
  zfile.close();
 }

 /**
  * getRealFileName
  *
  * @param  baseDir   Root Directory
  * @param  absFileName  absolute Directory File Name
  * @return java.io.File     Return file
  */
 @SuppressWarnings({ "rawtypes", "unchecked" })
private static File getRealFileName(String baseDir, String absFileName) throws Exception {

  File ret = null;

  List dirs = new ArrayList();
  StringTokenizer st = new StringTokenizer(absFileName, System.getProperty("file.separator"));
  while (st.hasMoreTokens()) {
   dirs.add(st.nextToken());
  }

  ret = new File(baseDir);
  if (dirs.size() > 1) {
   for (int i = 0; i < dirs.size() - 1; i++) {
    ret = new File(ret, (String) dirs.get(i));
   }
  }
  if (!ret.exists()) {
   ret.mkdirs();
  }
  ret = new File(ret, (String) dirs.get(dirs.size() - 1));
  return ret;
 }

 /**
  * copyFile
  *
  * @param  srcFile   Source File
  * @param  targetFile   Target file
  */
 @SuppressWarnings("resource")
 static public void copyFile(String srcFile , String targetFile) throws IOException
  {

   FileInputStream reader = new FileInputStream(srcFile);
   FileOutputStream writer = new FileOutputStream(targetFile);

   byte[] buffer = new byte [4096];
   int len;

   try
   {
    reader = new FileInputStream(srcFile);
    writer = new FileOutputStream(targetFile);

    while((len = reader.read(buffer)) > 0)
    {
     writer.write(buffer , 0 , len);
    }
   }
   catch(IOException e)
   {
    throw e;
   }
   finally
   {
    if (writer != null)writer.close();
    if (reader != null)reader.close();
   }
  }

 /**
  * renameFile
  *
  * @param  srcFile   Source File
  * @param  targetFile   Target file
  */
 static public void renameFile(String srcFile , String targetFile) throws IOException
  {
   try {
    copyFile(srcFile,targetFile);
    deleteFromName(srcFile);
   } catch(IOException e){
    throw e;
   }
  }


 public static void write(String tivoliMsg,String logFileName) {
  try{
    byte[]  bMsg = tivoliMsg.getBytes();
    FileOutputStream fOut = new FileOutputStream(logFileName, true);
    fOut.write(bMsg);
    fOut.close();
  } catch(IOException e){
   //throw the exception     
  }

 }
 /**
 * This method is used to log the messages with timestamp,error code and the method details
 * @param errorCd String
 * @param className String
 * @param methodName String
 * @param msg String
 */
 public static void writeLog(String logFile, String batchId, String exceptionInfo) {

  DateFormat df = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.JAPANESE);

  Object args[] = {df.format(new Date()), batchId, exceptionInfo};

  String fmtMsg = MessageFormat.format("{0} : {1} : {2}", args);

  try {

   File logfile = new File(logFile);
   if(!logfile.exists()) {
    logfile.createNewFile();
   }

      FileWriter fw = new FileWriter(logFile, true);
      fw.write(fmtMsg);
      fw.write(System.getProperty("line.separator"));

      fw.flush();
      fw.close();

  } catch(Exception e) {
  }
 }

 public static String readTextFile(String realPath) throws Exception {
  File file = new File(realPath);
   if (!file.exists()){
    System.out.println("File not exist!");
    return null;
   }
   BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(realPath),"UTF-8"));  
   String temp = "";
   String txt="";
   while((temp = br.readLine()) != null){
    txt+=temp;
    }  
   br.close();
  return txt;
 }
}


    
 
 

您可能感兴趣的文章:

  • Java读写包括中文的txt文件时不同编码格式问题解决
  • JAVA编译的CLASS文件可以反编译为JAVA文件吗?
  • 保存java.sh文件时,多出一个java.sh~文件
  • 用什么工具可以把JAVA的.CLASS文件反编译成.JAVA文件??
  • 请问把.class文件反编译为.java文件的工具有什么???能恢复到原来的.java文件吗???
  • 一个.java文件中怎样来调用另一个.java文件中的变量及其它东西!
  • 用java读中文linux中的文件是正确的,用java读英文linux版本中的文件是乱码,如何使英文linux读出的文件数据也是中文的?
  • java文件复制代码片断(java实现文件拷贝)
  • java读取csv文件示例分享(java解析csv文件)
  • 我刚学java,想请教一下,我在文本中创建了一个接口,一个类,还有一个扩展类,保存为.java文件时,如何给文件名?
  • 请教:有没有把java编译好的.java和.class文件编译成各个平台下的可执行文件??.exe?着急着急
  • java文件操作之java写文件简单示例
  • java复制文件和java移动文件的示例分享
  • java读取文件内容的三种方法代码片断分享(java文件操作)
  • 编译前的java文件没有,只有class文件
  • 我用java编了一个程序,是多个java文件,属于一个包,需要联编,但我不会
  • 低级问题:.java文件交付用户怎么运行,难道也是DOS下:java xx.java?有没有.exe?
  • 我在jbuilder中新建一个servlet,源程序为java文件,是怎么从java到servler转换的?
  • 求救!!如何在java程序中调用外部非java的exe文件?
  • 谁有办法用java执行于java.exe不在一个目录的class文件?
  • 怎样把CLASS文件转成JAVA文件
  • 轻量级Java开发工具 Java Tools
  • Java数据库建模工具 Mogwai Java Tools
  • Java源码工具 java2html
  • Java代码分享工具 Java Gems
  • Java数据库映射工具 SQL2JAVA
  • 急!请问有分析java程序性能瓶颈的工具吗?例如,统计 java 程序中函数调用次数?
  • Java 常用工具包 JCake
  • java初学者问:java操作平台是什么?用什么工具?
  • 初学java可以用哪种工具好?visual age for java 怎么样?
  • 我初学java,请教各位开发java用什么工具好?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java操作excel2007文档介绍及代码例子
  • java执行操作系统命令的问题:如何判断多个操作系统?
  • 我是java新手,请问java中与平台相关的操作是怎样实现的
  • Java的XML操作类库 JDOM
  • Java操作系统 JNode
  • Java 操作 Excel 的类库 jExcelApi
  • JAVA与数据库操作问题
  • 请问又没有java控制.exe或操作注册表的方法?
  • Java的Excel操作包 OpenXLS
  • Java和DLL(COM)互操作 Jawin
  • 寻求java对串口操作的帮助
  • 小弟有如下问题:JAVA中怎样实现对操作平台的句柄!谢谢了:)
  • java 对树的操作,TreeSet,能否插入相同的数据,如果相同,如何解决
  • java的操作平台是什么?用什么工具?
  • JAVA可以获得操作系统的临时目录的路径吗?
  • Java类文件操作库 Barista
  • Java程序中能否直接操作本地文件?
  • 在Java里,有没有直接对XML文件进行操作的函数?
  • java中判断本机操作系统的类和方法
  • 怎样用JAVA语言实现对串口的操作?
  • java中有对配置文件*.ini的操作吗?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3