`
lspgdut
  • 浏览: 198806 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

FileUtil

阅读更多
package util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/***
*
* @author Jacky
*
*/
public class FileUtil {

public static void write(String path,String content,boolean append){
FileWriter writer = null;
try {
// 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
writer = new FileWriter(path, append);
writer.write(content);

} catch (IOException e) {
e.printStackTrace();
} finally{
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

public static String readFile(String fileName){
    File file = new File(fileName);
         BufferedReader reader = null;
         StringBuffer sb=new StringBuffer();
       
         try {
             // System.out.println("以行为单位读取文件内容,一次读一整行:");
              reader = new BufferedReader(new FileReader(file));
              String tempString = null;
              //int line = 1;
              // 一次读入一行,直到读入null为文件结束
              while ((tempString = reader.readLine()) != null) {
                  // 显示行号
                  //System.out.println("line " + line + ": " + tempString);
                 // result.add(tempString);
                  //line++;
             
              sb.append(tempString);
              sb.append("\r\n");
              }
              reader.close();
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              if (reader != null) {
                  try {
                      reader.close();
                  } catch (IOException e1) {
                  }
              }
          }
        
         return sb.toString();
    }

       public static void write(String path, String content) {
      String s = new String();
      String s1 = new String();
      try {
       File f = new File(path);
       if (f.exists()) {
        System.out.println("文件存在");
       } else {
        System.out.println("文件不存在,正在创建...");
        if (f.createNewFile()) {
         System.out.println("文件创建成功!");
        } else {
         System.out.println("文件创建失败!");
        }

       }
       BufferedReader input = new BufferedReader(new FileReader(f));

       while ((s = input.readLine()) != null) {
        s1 += s + "\n";
       }
     
       input.close();
       s1 += content;

       BufferedWriter output = new BufferedWriter(new FileWriter(f));
       output.write(s1);
       output.close();
      } catch (Exception e) {
       e.printStackTrace();
      }
}

/***
* 合并文件
* @param toFile 目标文件
* @param files  要合并的文件数组
*/
public static void hebingFiles(File toFile,File[] files){
try {
FileOutputStream fout=new FileOutputStream(toFile);
FileInputStream fis=null;
for(File file:files){
fis=new FileInputStream(file);
byte data[]=new byte[1024];
int read=0;
while((read=fis.read(data))!=-1){
fout.write(data, 0, read);
}
fis.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}

/***
* 文件分割
* @param file 要分割的文件
* @param dir  保存分割数据的文件夹
* @param comminuteSize 分割块大小
*/
public static void fileComminute(File file,File dir,int comminuteSize){
long fileSize=file.length();
System.out.println("fileSize==>"+fileSize);
long bit=(fileSize-1)/comminuteSize+1;
System.out.println("bit==>"+bit);
if(fileSize<2){
System.out.println("文件太小,不需要分割");
return;
}
int fileNumber=0;
try {
FileInputStream fis=new FileInputStream(file);
String name=file.getName();
FileOutputStream fout=null;
int tempSize=comminuteSize;
int read=0;
byte[] datas=new byte[1024];
while((read=fis.read(datas))!=-1){
if(tempSize>=comminuteSize){
if(fout!=null){
fout.close();
}
File nextFile=new File(dir,name+".sp"+(fileNumber++));
fout=new FileOutputStream(nextFile);
tempSize=0;

}
tempSize+=read;
fout.write(datas, 0, read);
}
} catch (Exception e) {
e.printStackTrace();
}

}

public static boolean deleteRecursive(File path)
{
if (!path.exists())
{
throw new RuntimeException("can not find");
}
boolean ret = true;
if (path.isDirectory()) {
for (File f : path.listFiles()) {
ret = ret && deleteRecursive(f);
}
}
return ret && path.delete();
}

//find out file 所在的folder名 如c:/temp/aa.txt,则返回c:/temp
public static String getFolderPath(String file){
String result="";
if(null==file || "".equals(file)){

}
else{
String[] ss=file.split("\\/");
for(int i=0;i<ss.length-1;i++){
result+=ss[i];
result+="/";
}
}

return result;
}



public static boolean createFolder(String folder){
File dir=new File(folder);
return dir.mkdirs();
}

public static boolean Move(File srcFile, String destPath) {
// Destination directory
File dir = new File(destPath);

// Move file to new directory
boolean success = srcFile.renameTo(new File(dir, srcFile.getName()));

return success;
}

public static boolean Move(String srcFile, String destPath) {
// File (or directory) to be moved
File file = new File(srcFile);

// Destination directory
File dir = new File(destPath);

// Move file to new directory
boolean success = file.renameTo(new File(dir, file.getName()));

return success;
}

public static void Copy(String oldPath, String newPath) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPath);
if (oldfile.exists()) {
InputStream inStream = new FileInputStream(oldPath);
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1024];

while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread;
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
} catch (Exception e) {
System.out.println("error  ");
e.printStackTrace();
}
}

public static void Copy(File oldfile, String newPath) {
try {
int bytesum = 0;
int byteread = 0;
// File oldfile = new File(oldPath);
if (oldfile.exists()) {
InputStream inStream = new FileInputStream(oldfile);
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1024];
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread;
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
} catch (Exception e) {
System.out.println("error  ");
e.printStackTrace();
}



/**
* @param args
*/
public static Boolean isSameFile(String fileName1,String fileName2) {

Boolean isSame=false;
FileInputStream fis1=null;
FileInputStream fis2=null;
try {
fis1=new FileInputStream(fileName1);
fis2=new FileInputStream(fileName2);
int len1=fis1.available();
int len2=fis2.available();
if (len1 == len2) {// 长度相同,则比较具体内容//建立两个字节缓冲区
byte[] data1 = new byte[len1];
byte[] data2 = new byte[len2];
// 分别将两个文件的内容读入缓冲区
fis1.read(data1);
fis2.read(data2);
// 依次比较文件中的每一个字节
for (int i = 0; i < len1; i++) {
// 只要有一个字节不同,两个文件就不一样
if (data1[i] != data2[i]) {
/*System.out.println("文件内容不一样");
return;*/
isSame=false;
break;
}
}
isSame=true;
} else {// 长度不一样,文件肯定不同
//System.out.println("两个文件长度不同");
isSame=false;
}


} catch (Exception e) {
e.printStackTrace();
}finally{
try{
if(null!=fis1){
fis1.close();
}
if(null!=fis2){
fis2.close();
}
}catch (Exception e) {
e.printStackTrace();
}
}

return isSame;

}

public static ArrayList<String> searchFolderFileNames(String folder){
ArrayList<String> results=new ArrayList<String>();
ArrayList<File> files=searchFolder(folder);
for(File file:files){
results.add(file.getAbsolutePath());
}

return results;
}


/***
* 查找folder下的所有文件
* @param folder 文件夹下的所有文件
*/
public static ArrayList<File> searchFolder(String folder){
ArrayList<File> result=new ArrayList<File>();

LinkedList<File> list=new  LinkedList<File>();
File dir = new File(folder);
File file[] = dir.listFiles();
      
       
        for (int i = 0; i < file.length; i++) {
            if (file[i].isDirectory())
                list.add(file[i]);
            else{
                //System.out.println(file[i].getAbsolutePath());
            }
        }

       
        File tmp=null;
        while (!list.isEmpty()) {
            tmp = list.removeFirst();
            if (tmp.isDirectory()) {
                file = tmp.listFiles();
                if (file == null)
                    continue;
                for (int i = 0; i < file.length; i++) {
                    if (file[i].isDirectory())
                        list.add(file[i]);
                    else{
                    //System.out.println(file[i].getAbsolutePath());
                    result.add(file[i]);
                    }
                      
                }
            } else {
               // System.out.println(tmp.getAbsolutePath());
            result.add(tmp);
            }
        }


return result;
}


/**
     * 以行为单位读取文件,常用于读面向行的格式化文件
     */
    public static  List<String> readFileByLines(String fileName) {
        File file = new File(fileName);
        BufferedReader reader = null;
        List<String> result=new ArrayList<String>();
        try {
           // System.out.println("以行为单位读取文件内容,一次读一整行:");
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;
            //int line = 1;
            // 一次读入一行,直到读入null为文件结束
            while ((tempString = reader.readLine()) != null) {
                // 显示行号
                //System.out.println("line " + line + ": " + tempString);
                result.add(tempString);
                //line++;
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
        return result;
    }

   

/**
* @param args
*/
public static void main(String[] args) throws Exception{
FileUtil fileUtil=new FileUtil();
ArrayList<File> files=fileUtil.searchFolder("C:/ProjectCheckOut/GPFS/gpfs-web-deleted");
       System.out.println("files size===>"+files.size());
      
       List<String> results= fileUtil.readFileByLines("C:/list/change.txt");
       for(String temp:results){
       System.out.println("temp===>"+temp);
       }
       System.out.println("results size===>"+results.size());
}

}
分享到:
评论

相关推荐

    FileUtil(文件操作工具类)

    在Java编程中,`FileUtil`通常是一个自定义的工具类,用于封装常见的文件操作,以便在项目中方便地处理文件。这个类可以提供一系列静态方法,帮助开发者执行读写文件、创建、删除、移动、复制文件等任务,极大地提高...

    FileUtil类文件整理

    在Java编程语言中,`FileUtil`类通常是由开发者自定义的一个工具类,用于封装对文件和目录的操作,以提供更便捷、安全的文件处理功能。这个类可能会包含各种静态方法,用来创建、读取、写入、删除、移动、复制文件...

    Base64Util、FileUtil、GsonUtils、HttpUtil

    在给出的标题和描述中,我们涉及了四个关键的工具类:Base64Util、FileUtil、GsonUtils和HttpUtil。这些工具类分别用于Base64编码解码、文件操作、JSON数据处理以及HTTP请求。下面将详细介绍这四个工具类的主要功能...

    纯净的Exceptionbean和FileUtil可用于spring的案例

    在这个案例中,我们关注的是两个核心组件:`ExceptionBean`和`FileUtil`。这两个组件分别用于优雅地处理异常和简化文件操作。 首先,让我们深入理解`ExceptionBean`。在Java编程中,异常处理是必不可少的一部分。`...

    Java文件处理工具类--FileUtil

    * FileUtil. Simple file operation class. * * @author BeanSoft * */ public class FileUtil { /** * The buffer. */ protected static byte buf[] = new byte[1024]; /** * Read content from ...

    文件操作工具 FileUtil

    "FileUtil"是一个基于Qt框架的库,专门用于处理各种类型的文件,包括CSV、DBF、Excel、INI、JSON和XML等。下面将详细介绍这些文件格式以及如何使用Qt进行操作。 1. CSV(Comma Separated Values)文件: CSV是一种...

    ArrayUtil+DateUtil+FileUtil+ReguUtil+StringUtil

    这里提到的"ArrayUtil+DateUtil+FileUtil+ReguUtil+StringUtil"是五个这样的工具包,它们分别针对数组操作、日期处理、文件操作、正则表达式匹配和字符串操作提供了一系列便利的方法。 1. **ArrayUtil**: - **...

    关于文件操作的工具类 -- FileUtil

    public class FileUtil { /** * 新建目录 * @param folderPath String 如 c:/fqf * @return boolean */ public static void newFolder(String folderPath) { try { String filePath = folderPath; ...

    FileUtil.rar

    `FileUtil`工具类集合了多种文件操作功能,为开发者提供了一站式的解决方案。下面将详细介绍这个工具类中涉及的关键知识点。 首先,文件大小转换是一个常见的需求,特别是在处理大文件时。`FileUtil`可能包含了将...

    hadoop FileUtil.java 解决权限检查的问题

    org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689) 解决这个问题后,重新生成的jar包

    FileUtil.java

    在百度官方文档的FileUtil类做了修改,函数可以直接调用,包含URI绝对路径转换,存储权限获取,根据文件路径读取Bytes数组等

    fileutil.java

    fileutil.java有需要的自己下载。

    fileutil文件通用类

    通用文件方法,方发都很通用,在java中这些都是常用的

    Xenos.zip_"blackbone" 使用_FileUtil.cpp:452:_Xenos 注入 使用_dll注入_saf

    本文将深入探讨“Xenos.zip”这个压缩包中的核心内容——一个基于“Blackbone”库开发的DLL注入工具,以及相关的“FileUtil.cpp:452”代码段。我们将讨论DLL注入的基本原理,Blackbone库的功能,以及安全性方面的...

    fileutil工具类 处理文件流工具

    fileutil工具类 处理文件流工具 private static File file; /** * 判断文件是否存在 * * @param path * 文件路径 * @return boolean */ public static boolean fileIsExists(String path) { if (path ==...

Global site tag (gtag.js) - Google Analytics