文档操作工具类
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class FileUtil {
/**
* 读取文件的方法,
* 把数据存到list当中返回
* @param file 读取文件路径
* @return List<String>
*/
public static List<String> getData(File file) throws IOException {
List<String> list = new ArrayList<String>();
if (!file.exists()) {
System.out.println(file.getPath()+"不存在");
return list;
}
FileReader fr = new FileReader(file);
@SuppressWarnings("resource") //去掉没必要警告
BufferedReader br = new BufferedReader(fr); //创建缓存区,提高读取效率
String str;
// br.readLine(); //除去第一行 /*看情况使用*/
while((str = br.readLine())!=null) {
list.add(str);
}
br.close();
fr.close();
return list;
}
/**
* 写入文件,按List<String>列表写入数据
* @param file 要写入的文档名
* @param data 要写入的数据list
* 每次写入文件都会删除原来的内容
*/
public static void writeData(File file,List<String> data) throws IOException {
FileWriter fw;
if(data.size()>0) {
if(!file.exists()) {
file.createNewFile();
}
if(file.exists()) {
file.delete(); //清空文件内容
file.createNewFile();
fw = new FileWriter(file,true); //创建io流,写入文档
@SuppressWarnings("resource")
BufferedWriter bw = new BufferedWriter(fw); //创建缓存区,提高写入效率
for(String str:data) {
bw.write(str+"\n"); //写入数据
bw.flush();// 刷新缓存区
}
bw.close();// 关闭缓存区
fw.close(); // 关闭io流
System.out.print("写入文件成功-->");
}
}else {
System.out.print(file.getName()+"没有数据!-->");
if(file.exists()) {
file.delete();
}
}
}
/**
* 写入文件,按行写入数据
* @param file 要写入的文档名
* @param data 要写入的一条数据
*/
public static void writeDataByLine(File file,String data) throws IOException {
FileWriter fw;
if(!file.exists()) {
file.createNewFile();
}
if(file.exists()) {
fw = new FileWriter(file,true); //创建io流,写入文档
@SuppressWarnings("resource")
BufferedWriter bw = new BufferedWriter(fw); //创建缓存区,提高写入效率
bw.write(data+"\n"); //写入数据
bw.flush(); // 刷新缓存区
bw.close(); // 关闭缓存区
fw.close(); // 关闭io流
}
}
/**
* map 写入 本地
* @param file 要写入的文档名
* @param m 要写入的数据
*/
public <K, V extends Comparable<? super V>> void writeDataByMap(File file, Map<K,V> m) throws IOException {
Set<K> keys = m.keySet();
List<String> l = new ArrayList<>();
for(K key:keys) {
String data= key +","+ m.get(key);
l.add(data);
}
writeData(file, l);
}
}
方法调用
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;
public class Test {
public static void main(String[] args) throws IOException{
File file = new File("D:\\map.txt");
List<String> list = FileUtil.getData(file);
list.forEach(System.out::println);
}
}