关于java生成文件,立即又读这个文件但又找不到文件新增内容的问题
本人用protobuf,写了一个.proto文件然后生成了一个Msg.java,然后立刻从Msg中获取Msg中的内容,结果找不到Msg中的内容,手动刷新一下就能找到了,该...
本人用protobuf,写了一个.proto文件然后生成了一个Msg.java,然后立刻从Msg中获取Msg中的内容 ,结果找不到Msg中的内容,手动刷新一下就能找到了,该怎么做才能不用手动刷新呢
展开
1个回答
展开全部
写文件之后,应该有一个刷新流缓冲的flush()方法。该方法可以保证你可以读到你之前所写的内容。下面是我写的一个简单的测试用例:
package test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
File file = new File("C:\\Users\\pengyongjun\\Desktop\\a.txt");
FileWriter fileWriter = new FileWriter(file);
fileWriter.write("hello");
fileWriter.flush(); //这一句是关键
FileReader fileReader = new FileReader(file);
BufferedReader reader = new BufferedReader(fileReader);
String string = reader.readLine();
System.out.println(string);
fileReader.close();
fileWriter.close();
}
}
如果加上fileWriter.flush();这句,那么string为之前写的hello,否则,string为空。所以我想,你应该需要的是这个flush()方法。
追问
没有flush是缓存未提交,我遇到的问题是用protobuf直接生成.java消息文件,.java文件不能立刻出现在工程中,后来sleep几秒钟,问题就解决了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询