热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

java文件读写工具类分享

这篇文章主要为大家详细介绍了java文件读写工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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;

/**
 * 

文件操作工具类

* @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 getFilesName(String folderPath , String queryStr) { HashMap map = new HashMap<>(); List fileNameList = new ArrayList<>();//文件名列表 List 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 &#63; "" : queryStr;//若queryStr传入为null,则替换为空(indexOf匹配值不能为null) for (int i = 0; i readFileContent(String filePath) { BufferedReader reader = null; List 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 readLinesContent(String filePath,int beginLineNumber,int endLineNumber){ List 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 readFileContent_list(List listFilePath) { List 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<&#63; extends Object> list){ if(null == list) return false; return 1 == new HashSet(list).size(); } /** * 判断list中是否有重复元素(无重复返回true,否则返回false) * @param list * @return */ private static boolean hasSame2(List<&#63; extends Object> list){ if(null == list) return false; return list.size() == new HashSet(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(); } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
author-avatar
阿斌之摩羯座
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有