关于java生成文件,立即又读这个文件但又找不到文件新增内容的问题

本人用protobuf,写了一个.proto文件然后生成了一个Msg.java,然后立刻从Msg中获取Msg中的内容,结果找不到Msg中的内容,手动刷新一下就能找到了,该... 本人用protobuf,写了一个.proto文件然后生成了一个Msg.java,然后立刻从Msg中获取Msg中的内容 ,结果找不到Msg中的内容,手动刷新一下就能找到了,该怎么做才能不用手动刷新呢 展开
 我来答
如枫liunian
2013-11-12 · TA获得超过285个赞
知道小有建树答主
回答量:85
采纳率:0%
帮助的人:95.5万
展开全部

写文件之后,应该有一个刷新流缓冲的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几秒钟,问题就解决了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式