java文件读写工具类分享
作者:漂流的老妖怪 发布时间:2023-07-30 21:04:19
标签: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;
/**
* <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


猜你喜欢
- 这篇文章主要介绍了SpringBoot+SpringCloud实现登录用户信息在微服务之间的传递,文中通过示例代码介绍的非常详细,对大家的学
- 原文:http://it.deepinmind.com/java/2015/03/17/20-examples-of-date-and-ti
- 页面:上传文件时的关键词:enctype="multipart/form-data"<%@ page langua
- 传统界面的布局方式总是行列分明、坐落有序的,这种布局已是司空见惯,在不知不觉中大家都已经对它产生了审美疲劳。这个时候瀑布流布局的出现,就给人
- CXF简介CXF是一个开源的WebService框架。Apache CXF = Celtix + XFire,开始叫 Apache Celt
- 前言日常开发中常见的文件格式有pdf,word,Excel,PPT,Html,txt,图片等。pdf,Html,txt,图片这种实现在线预览
- 前言:在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程
- Java(和其他语言)通过内部类支持嵌套类。要使其正常工作,需要编译器执行一些技巧。这是一个例子:public class Outer {
- package other;import java.security.MessageDigest;import java.security.
- 本文实例为大家分享了Android仿美团下拉菜单的实现代码,分类进行选择,供大家参考,具体内容如下效果图操作平台AS2.0第三方框架:but
- 在面向对象编程中,SOLID 是五个设计原则的首字母缩写,旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师
- 前言前面说到在我们应对高并发的场景,请求量过于大的情况下给我们服务器的压力很多,造成缓存穿透、击穿、雪崩,那么我们采用布隆过滤器,有兴趣的小
- 本文实例为大家分享了unity实现弧形移动的具体代码,自定角度,供大家参考,具体内容如下两点之间弧形移动using UnityEngine;
- 如何使用exe4j把jar打包成exe文件最近,做了几个javafx的项目,想要把jar包打成exe的可执行软件,下面时我使用exe4j打包
- 十进制转二进制正整数转二进制除2取余,逆序排列,高位补零。示例:十进制255 = 二进制1111 1111计算过程:255/2=127===
- 本文实例为大家分享了Java实现石头剪刀布的具体代码,供大家参考,具体内容如下代码:package com.neusoft.test;imp
- 标准函数标准函数就是在Standard.kt文件中定义的函数,任何Kotlin代码都可以自由地调用所有的标准函数let函数就属于是一个标准函
- 1.super介绍我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。用于访问父类的属性,方法,构造器2.super
- 前言经过前面对 Kotlin 的介绍,相信大家已经能对 Kotlin 有了一个基本的认识。 从这节开始,我就为大家讲解 Kotlin的方法以
- 首先在新建了一个web服务文件。public SqlWhhWebService1() &nbs