java文件读写工具类分享

作者:漂流的老妖怪 时间:2023-07-30 21:04:19 

本文实例为大家分享了java文件读写工具类的具体代码,供大家参考,具体内容如下


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

/**
* <p>文件操作工具类<p>
* @version 1.0
* @author li_hao
* @date 2017年1月18日
*/
@SuppressWarnings({"resource","unused"})
public class FileUtils {

/**
  * 获取windows/linux的项目根目录
  * @return
  */
 public static String getConTextPath(){
   String fileUrl = Thread.currentThread().getContextClassLoader().getResource("").getPath();
   if("usr".equals(fileUrl.substring(1,4))){
     fileUrl = (fileUrl.substring(0,fileUrl.length()-16));//linux
   }else{
     fileUrl = (fileUrl.substring(1,fileUrl.length()-16));//windows
   }
   return fileUrl;
 }

/**
  * 字符串转数组
  * @param str 字符串
  * @param splitStr 分隔符
  * @return
  */
 public static String[] StringToArray(String str,String splitStr){
   String[] arrayStr = null;
   if(!"".equals(str) && str != null){
     if(str.indexOf(splitStr)!=-1){
       arrayStr = str.split(splitStr);
     }else{
       arrayStr = new String[1];
       arrayStr[0] = str;
     }
   }
   return arrayStr;
 }

/**
  * 读取文件
  *
  * @param Path
  * @return
  */
 public static String ReadFile(String Path) {
   BufferedReader reader = null;
   String laststr = "";
   try {
     FileInputStream fileInputStream = new FileInputStream(Path);
     InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
     reader = new BufferedReader(inputStreamReader);
     String tempString = null;
     while ((tempString = reader.readLine()) != null) {
       laststr += tempString;
     }
     reader.close();
   } catch (IOException e) {
     e.printStackTrace();
   } finally {
     if (reader != null) {
       try {
         reader.close();
       } catch (IOException e) {
         e.printStackTrace();
       }
     }
   }
   return laststr;
 }

/**
  * 获取文件夹下所有文件的名称 + 模糊查询(当不需要模糊查询时,queryStr传空或null即可)
  * 1.当路径不存在时,map返回retType值为1
  * 2.当路径为文件路径时,map返回retType值为2,文件名fileName值为文件名
  * 3.当路径下有文件夹时,map返回retType值为3,文件名列表fileNameList,文件夹名列表folderNameList
  * @param folderPath 路径
  * @param queryStr 模糊查询字符串
  * @return
  */
 public static HashMap<String, Object> getFilesName(String folderPath , String queryStr) {
   HashMap<String, Object> map = new HashMap<>();
   List<String> fileNameList = new ArrayList<>();//文件名列表
   List<String> folderNameList = new ArrayList<>();//文件夹名列表
   File f = new File(folderPath);
   if (!f.exists()) { //路径不存在
     map.put("retType", "1");
   }else{
     boolean flag = f.isDirectory();
     if(flag==false){ //路径为文件
       map.put("retType", "2");
       map.put("fileName", f.getName());
     }else{ //路径为文件夹
       map.put("retType", "3");
       File fa[] = f.listFiles();
       queryStr = queryStr==null ? "" : queryStr;//若queryStr传入为null,则替换为空(indexOf匹配值不能为null)
       for (int i = 0; i < fa.length; i++) {
         File fs = fa[i];
         if(fs.getName().indexOf(queryStr)!=-1){
            if (fs.isDirectory()) {
              folderNameList.add(fs.getName());
            } else {
              fileNameList.add(fs.getName());
            }
          }
       }
       map.put("fileNameList", fileNameList);
       map.put("folderNameList", folderNameList);
     }
   }
   return map;
 }

/**
  * 以行为单位读取文件,读取到最后一行
  * @param filePath
  * @return
  */
 public static List<String> readFileContent(String filePath) {
   BufferedReader reader = null;
   List<String> listContent = new ArrayList<>();
   try {
     reader = new BufferedReader(new FileReader(filePath));
     String tempString = null;
     int line = 1;
     // 一次读入一行,直到读入null为文件结束
     while ((tempString = reader.readLine()) != null) {
       listContent.add(tempString);
       line++;
     }
     reader.close();
   } catch (IOException e) {
     e.printStackTrace();
   } finally {
     if (reader != null) {
       try {
         reader.close();
       } catch (IOException e1) {
       }
     }
   }
   return listContent;
 }

/**
  * 读取指定行数据 ,注意:0为开始行
  * @param filePath
  * @param lineNumber
  * @return
  */
 public static String readLineContent(String filePath,int lineNumber){
   BufferedReader reader = null;
   String lineContent="";
   try {
     reader = new BufferedReader(new FileReader(filePath));
     int line=0;
     while(line<=lineNumber){
       lineContent=reader.readLine();
       line++;
     }
     reader.close();
   } catch (IOException e) {
     e.printStackTrace();
   } finally {
     if (reader != null) {
       try {
         reader.close();
       } catch (IOException e1) {
       }
     }
   }
   return lineContent;
 }

/**
  * 读取从beginLine到endLine数据(包含beginLine和endLine),注意:0为开始行
  * @param filePath
  * @param beginLineNumber 开始行
  * @param endLineNumber 结束行
  * @return
  */
 public static List<String> readLinesContent(String filePath,int beginLineNumber,int endLineNumber){
   List<String> listContent = new ArrayList<>();
   try{
     int count = 0;
   BufferedReader reader = new BufferedReader(new FileReader(filePath));
     String content = reader.readLine();
     while(content !=null){
       if(count >= beginLineNumber && count <=endLineNumber){
         listContent.add(content);
       }  
       content = reader.readLine();
       count++;  
     }
   } catch(Exception e){
   }
   return listContent;
 }

/**
  * 读取若干文件中所有数据
  * @param listFilePath
  * @return
  */
 public static List<String> readFileContent_list(List<String> listFilePath) {
   List<String> listContent = new ArrayList<>();
   for(String filePath : listFilePath){
      File file = new File(filePath);
      BufferedReader reader = null;
     try {
       reader = new BufferedReader(new FileReader(file));
       String tempString = null;
       int line = 1;
       // 一次读入一行,直到读入null为文件结束
       while ((tempString = reader.readLine()) != null) {
         listContent.add(tempString);
         line++;
       }
       reader.close();
     } catch (IOException e) {
       e.printStackTrace();
     } finally {
       if (reader != null) {
         try {
           reader.close();
         } catch (IOException e1) {
         }
       }
     }
   }
   return listContent;
 }

/**
  * 文件数据写入(如果文件夹和文件不存在,则先创建,再写入)
  * @param filePath
  * @param content
  * @param flag true:如果文件存在且存在内容,则内容换行追加;false:如果文件存在且存在内容,则内容替换
  */
 public static String fileLinesWrite(String filePath,String content,boolean flag){
   String filedo = "write";
   FileWriter fw = null;
   try {
     File file=new File(filePath);
     //如果文件夹不存在,则创建文件夹
     if (!file.getParentFile().exists()){
       file.getParentFile().mkdirs();
     }
     if(!file.exists()){//如果文件不存在,则创建文件,写入第一行内容
       file.createNewFile();
       fw = new FileWriter(file);
       filedo = "create";
     }else{//如果文件存在,则追加或替换内容
       fw = new FileWriter(file, flag);
     }
   } catch (IOException e) {
     e.printStackTrace();
   }
     PrintWriter pw = new PrintWriter(fw);
     pw.println(content);
     pw.flush();
   try {
     fw.flush();
     pw.close();
     fw.close();
   } catch (IOException e) {
     e.printStackTrace();
   }
   return filedo;
 }

/**
  * 写文件
  * @param ins
  * @param out
  */
 public static void writeIntoOut(InputStream ins, OutputStream out) {
   byte[] bb = new byte[10 * 1024];
   try {
     int cnt = ins.read(bb);
     while (cnt > 0) {
       out.write(bb, 0, cnt);
       cnt = ins.read(bb);
     }
   } catch (IOException e) {
     e.printStackTrace();
   } finally {
     try {
       out.flush();
       ins.close();
       out.close();
     } catch (IOException e) {
       e.printStackTrace();
     }
   }
 }

/**
  * 判断list中元素是否完全相同(完全相同返回true,否则返回false)
  * @param list
  * @return
  */
 private static boolean hasSame(List<? extends Object> list){
   if(null == list)
     return false;
   return 1 == new HashSet<Object>(list).size();
 }

/**
  * 判断list中是否有重复元素(无重复返回true,否则返回false)
  * @param list
  * @return
  */
 private static boolean hasSame2(List<? extends Object> list){
   if(null == list)
     return false;
   return list.size() == new HashSet<Object>(list).size();
 }

/**
  * 增加/减少天数
  * @param date
  * @param num
  * @return
  */
 public static Date DateAddOrSub(Date date, int num) {
   Calendar startDT = Calendar.getInstance();
   startDT.setTime(date);
   startDT.add(Calendar.DAY_OF_MONTH, num);
   return startDT.getTime();
 }

}

来源:http://www.cnblogs.com/hooly/p/8041328.html

标签:java,文件读写,工具类
0
投稿

猜你喜欢

  • MyBatis查询时属性名和字段名不一致问题的解决方法

    2023-10-23 16:56:36
  • Java实现简单图书借阅系统

    2023-11-22 01:09:02
  • Java递归来实现汉诺塔游戏,注释详细

    2023-07-05 10:33:52
  • java关于string最常出现的面试题整理

    2021-10-08 01:12:45
  • C语言简明讲解变量的属性

    2021-06-23 17:45:28
  • c# 实现自动扫雷

    2021-09-01 09:25:58
  • linux下C语言中的mkdir函数与rmdir函数

    2023-07-07 14:16:16
  • 完美解决安卓jni项目会删除其他so文件的问题

    2023-11-07 16:45:47
  • 在Winform框架界面中改变并存储界面皮肤样式的方法

    2021-06-08 09:08:24
  • Java进程间通信之消息队列

    2023-05-24 01:44:27
  • 使用maven的profile构建不同环境配置的方法

    2023-08-30 23:43:45
  • C#如何自定义multipart/form-data的解析器

    2023-12-04 18:59:03
  • Android自定义属性 format的深入解析

    2022-12-05 14:56:57
  • C# WinForm状态栏实时显示当前时间(窗体状态栏StatusStrip示例)

    2022-10-09 16:58:51
  • Spring Security和Shiro的相同点与不同点整理

    2023-01-15 17:07:20
  • java io文件操作删除文件或文件夹的7种方法

    2022-08-09 13:29:21
  • Springboot整合Shiro的代码实例

    2021-09-03 04:16:52
  • C#条件拼接Expression<Func<T, bool>>的使用

    2023-07-11 22:29:18
  • Java面向接口编程之命令模式实例详解

    2021-10-19 14:26:53
  • mybatis <foreach>标签动态增删改查方式

    2022-07-27 20:03:16
  • asp之家 软件编程 m.aspxhome.com