今天帮老妈把旧手机的便签内容拷贝到新手机
但是旧手机没有批量发送功能
于是自己写了个简单的读取功能进行操作
操作过程发现文件输出总是不全
最后找到问题是
BufferedWriter写文件时没有调用flush()方法。在Java中,BufferedWriter是一个缓冲的字符输出流,它会将一部分数据积累在缓冲区中,直到缓冲区满或调用其flush()方法后才会将数据真正写入文件。
换句话说,如果你的程序没有在循环结束后手动调用bufferedWriter.flush()方法,缓冲区中可能会残留一部分未写入文件的数据。为了解决这个问题,可以在循环结束后添加一行bufferedWriter.flush()代码,强制将缓冲区的所有数据都写入文件:
javaCopy Code
....
while ((line = bufferedReader.read服务器托管网Line()) != null) {
....
}
bufferedWriter.flush(); // 强制将缓冲区的所有数据写入文件
System.out.println("文件读取完毕。");
....
下面是全部代码
package com.pjk.demo;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.util.HashMap;
/**
* @author: PJK
* @date: 2023-10-03=======>21:08
* 解析标签
*/
@Slf4j
public class ParseNote {
public static void main(String[] args) {
// 定义文件路径
String filePath = "C:UsersPJKDesktoptest.txt";
String targetPath = "C:UsersPJKDesktopnote.txt";
// 按行读取文件内容
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(targetPath));
// 定义一个接受文件的字符
String line;
int i=0;
while ((line = bufferedReader.readLine()) != null) {
i++;
log.info("开始读取文件内容:本次读取第{}行",i);
//服务器托管网 以逗号为分隔符 将内容存储到
String[] lineDatas = line.split(",");
HashMap map = new HashMap();
for (String lineData : lineDatas) {
String[] keyValue = lineData.split(":");
if (keyValue.length == 2) {
String key = keyValue[0].replaceAll(""", "");
String value = keyValue[1].replaceAll(""", "");
map.put(key, value);
}
}
String noteDate=map.get("date")+"======>"+map.get("content_no_tag");
log.info("第{}行输出的内容为:{}",i,noteDate);
bufferedWriter.write(noteDate);
bufferedWriter.newLine();
}
bufferedWriter.flush();
System.out.println("文件读取完毕。");
} catch (FileNotFoundException e) {
log.info("文件读取异常。");
} catch (IOException e) {
e.printStackTrace();
}
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: [代码]DOM和LINQ to XML创建XML树的三种方式
此代码主要示范了DOM和LINQ to XML三种创建XML树的方式。第01种、使用W3C DOM创建XML树可以使用XmlDocument.CreateElement()方法创建XML元素。使用XmlElement.InnerText为元素添加内容,比如在元…