Java文本处理(简单到高级)
Peng's Blog 只记录和技术相关的东西

Java文本处理(简单到高级)

2017-07-17

文本的读

详细说明:

新建一个文件对象,传进去文件路径

File filename = new File(pathname);

建立输入流对象 InputStreamReader

InputStreamReader reader = new InputStreamReader(new FileInputStream(filename));

BufferReader 缓冲字符输入流

BufferedReader br = new BufferedReader(reader);

缓冲字符输入流,作用是为其它字符输入流添加一些缓冲功能

文本内容的读取

String line = br.readLine();

要是需要做到一次读一行之类的,可以增加循环:

while(line!=null){

​ xxxx

​ line = br.readLine; // 读取下一行

}

关闭流和文件

br.close();

reader.close();

代码

String pathname = "xxx"; 
File filename = new File(pathname); 
InputStreamReader reader = new InputStreamReader(
        new FileInputStream(filename)); // 建立一个输入流对象reader
BufferedReader br = new BufferedReader(reader); // 建立一个对象,它把文件内容转成计算机能读懂的语言
String line = "";
line = br.readLine();
while (line != null) {
    System.out.println(line);
    line = br.readLine(); // 一次读入一行数据
}
br.close();
reader.close();

文本的写

建立一个文件对象,传进去文件路径

File writename = new File(pathname);

BufferWriter 字符缓冲输出流

BufferedWriter out = new BufferedWriter(new FileWriter(writename,true));

里面那个TRUE,代表 追加写

写文件

out.write(“wanna,xiannv!”);

将缓冲区的内容压入文件

out.flush();

关闭流和文件

out.close();

代码

File writename = new File(String.valueOf(filename)); 
//writename.createNewFile(); // 创建新文件
BufferedWriter out = new BufferedWriter(new FileWriter(writename,true));
out.write("wanan\r\n"); // \r\n即为换行
out.flush(); 
out.close(); // 最后记得关闭文件

高级应用

文本内容:

#org          port   group                                                           properties   xxx     xxxx
xxx        xx       xxxx

目标,抽取 key-value 数据结构,key为第三列:group,value为第一列 :org

关于 \\s+

\\s是正则表达式,表示空格、回车、换行等空白符

+ 表示一个或者多个的意思。

经常放在一起用,常用来切割文件,抽取有用的信息

代码实现

 Map<String, String> map = new HashMap<>();

//System.out.println("当前路径为:"+System.getProperty("user.dir"));  //获取当前路径
 
Path path = Paths.get(".xxx");
Files.readAllLines(path).forEach(line -> {
    String[] words = line.split("\\s+");
    if (words.length >= 2)
        map.put(words[2], words[0]);
});

一些知识点的说明

获取当前路径:System.getProperty(“user.dir”); user.dir 是系统内置的一个东西,代表当前的路径。一般是项目路径。然后就能进行路径String的拼接了

Path,1.7开始的一个类,代表路径。使用方式:Path path = Paths.get(“xxx”);


上一篇 Apache httpclient

Comments

评论功能暂停使用,如需跟作者讨论请联系底部的GitHub