BufferedWriter 的 flush() 方法

2023-05-16

package com.corpus;
import java.io.*;
import java.util.List;

import edu.stanford.nlp.ling.HasWord;
import edu.stanford.nlp.ling.Sentence;
import edu.stanford.nlp.ling.TaggedWord;
import edu.stanford.nlp.tagger.maxent.MaxentTagger;
public class testFile {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		MaxentTagger tagger = new MaxentTagger("F:\\stanford-postagger-2014-06-16\\models\\english-bidirectional-distsim.tagger");
		
		File file = new File("F:\\genia_train_data");
        File fi[] = file.listFiles();
        String name;
        int m;
        
        FileWriter fw = null;
        BufferedWriter bw = null;
        File fil = null;
        
        for(int i =0; i < fi.length; i++){
            name = fi[i].getName();
            m = name.lastIndexOf(".");
        	if(name.substring(m+1).equals("txt")){        			
        			fil = new File("F:\\test\\" + fi[i].getName());
        			fw = new FileWriter(fil);
        			bw = new BufferedWriter(fw);
        			List<List<HasWord>> sentences = MaxentTagger.tokenizeText(new BufferedReader(new FileReader("F:\\genia_train_data\\" + name)));
        		    for (List<HasWord> sentence : sentences) {	        		      
        		        List<TaggedWord> tSentence = tagger.tagSentence(sentence);	 
        		        bw.write(Sentence.listToString(tSentence, false));
        		        bw.flush(); 
        		        
        		    }	        		   
        	}
        		
	   }
        bw.close();
        fw.close();
	       
	}
}

今天这个小小程序仅仅调试就占用了我一天的时间,不可否认是效率太低,不会使用Eclipse的debug调试是一方面,理论基础薄弱就是另一个方面。

反省完毕,回到主题:

错误:在控制台可以打印信息,但是写不进txt文本

原因:没有及时 flush() ,

BufferedWriter是缓冲输入流,意思是调用BufferedWriter的write方法时候。数据是先写入到缓冲区里,并没有直接写入到目的文件里。必须调用BufferedWriter的flush()方法。这个方法会刷新一下该缓冲流,也就是会把数据写入到目的文件里。或者你可以调用BufferedWriter的close()方法,该方法会在关闭该输入流之前先刷新一下该缓冲流。也会把数据写入到目的文件里。


如果没有在里面的for()循环中添加 bw.flush(); 这句话,在if 的时候重新 new  BufferedWriter(); 就把原来bw(缓冲区)中的覆盖掉了。于是就不能写进文件字符。

以上程序时调试正确的结果:解决的办法就是在第二个for循环中添加了 flush()方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BufferedWriter 的 flush() 方法 的相关文章

  • BufferedWriter 的 flush() 方法

    package com corpus import java io import java util List import edu stanford nlp ling HasWord import edu stanford nlp lin
  • Java中flush()的使用

    对于Java中的文件操作 xff0c 常见的有FileWriter 和FileReader 有时不注意写flush 会发现写入数据或是读取数据错误 xff0c 比如 xff1a package lxt import java io File
  • 将格式化字符串写入文件 - Java

    我有一个用以下格式设置的字符串System out format 方法 我做了类似的事情 System out format I 3d var 9 6f i myVar 但是当我尝试将此格式化字符串写入文件时 我只得到类似的内容 java
  • 刷新不起作用

    Why fflush 不起作用c2 and c0 如果我使用声明c0 0 and c2 0它有效 但是fflush stdin 不起作用 我尝试放在不同的地方 但它不起作用 我在 ubuntu 13 04 中使用代码块 int main v
  • 我创建了一个带有自动刷新功能的 PrintWriter;为什么不自动冲洗?

    我的客户端是一个网络浏览器 并使用以下网址向我的服务器发送请求 http localhost 这是服务器端代码 问题出在run方法上ServingThread class class ServingThread implements Run
  • 计算通过 GZIPOutputStream 形成的 BufferedWriter 写入文件的字节数

    我有一个BufferedWriter如下所示 BufferedWriter writer new BufferedWriter new OutputStreamWriter new GZIPOutputStream hdfs create
  • FlushMode.AUTO后面检查什么?

    在Hibernate中 我想知道当flushMode为AUTO时哪些条件会触发刷新 它可能很复杂 或 神奇 但基本条件是什么 Thanks When 冲水模式 http docs jboss org hibernate core 3 5 j
  • 读取和写入 ANSI 格式的文本

    请看下面的代码 import java io public class CSVConverter private File csvFile private BufferedReader reader private StringBuffer
  • 如何在C中检查stdin是否为空

    我正在 重新 学习 C 编程 因此以下问题是为了理解 使用 scanf 我了解到 或者我自己发现 实际上不需要很长时间就能达到这一点 刷新 stdin 是一件好事 我进一步发现 在您的帮助下 fflush stdin 不是标准的操作 例如不
  • std::ofstream::close() 实际上做了什么?

    这个问题 如何保护日志免受应用程序崩溃的影响 https stackoverflow com questions 16267984 how to protect log from application crash把我引向另一个 什么意思s
  • 有没有办法将 Linux 管道设置为非缓冲或行缓冲?

    我的程序正在控制 Linux 上的外部应用程序 通过管道将输入命令传递到外部应用程序 stdin 并通过管道从外部应用程序 stdout 读取输出结果 问题在于 对管道的写入是按块缓冲的 而不是按行缓冲的 因此在我的应用程序接收外部应用程序
  • C# 刷新 StreamWriter 和 MemoryStream

    我使用以下代码片段 我不确定是否需要调用Flush方法 一旦StreamWriter 一旦开启MemoryStream converts an xsd object to the corresponding xml string using
  • Go Flush() 不起作用

    请检查一下这个要点并告诉我 出了什么问题 为什么我看不到我的消息 要旨 https gist github com cnaize 895f61b762a9f5ee074c https gist github com cnaize 895f6
  • 刷新 boost::iostreams::zlib_compressor。如何获得“同步刷新”?

    是否需要一些魔法才能获得 zlib 同步刷新 http www bolet org pornin deflate flush html使用时boost iostreams zlib compressor http www boost org
  • PHP - 使用 Ajax 刷新 While 循环数据

    使用PHP 我想创建一个 while 循环来读取大文件并在请求时发送当前行号 使用 Ajax 我想获取当前的行数并将其打印到页面上 使用 html 按钮 我希望能够单击并激活或终止仅运行一次并调用阿贾克斯方法 我已经尝试过 但由于某种原因
  • grails 中的刷新模式从自动更改为手动

    将我的 Grails 项目从 1 3 7 升级到 2 4 0 并修复与新 Grails 版本相关的各种问题后 我意识到对任何对象所做的任何更改都不会再 根本 保留 除非如果save flush true 叫做 在 Grails 1 3 7
  • 刷新jsp文件时线程锁定

    在重负载下 当 GZipping 和解压缩 JSP 文件时 我看到很多线程被锁定 线程转储如下所示 似乎来自大小为 14Kb 的 header jsp http 0 0 0 0 8080 304 daemon prio 3 tid 0x00
  • sys.stdout.flush 在 jupyter 笔记本中不起作用

    所以我只想重新运行此存储库中的代码 https github com dennybritz reinforcement learning blob master MC MC 20Prediction 20Solution ipynb htt
  • 为什么启用自动刷新后使用空打印?

    我在一段代码中发现了类似的东西 use IO Handle autoflush STDOUT 1 print 打印 的目的是清空可能已满的缓冲区吗 The print强制立即输出缓冲区中的所有文本 来自先前的打印 该代码基本上禁用缓冲并刷新
  • 如果是 PrintWriter,为什么我应该在循环中刷新而不是在循环之后刷新?

    我的小演示程序中有一个服务器和客户端 我将一些字符串数据从客户端发送到服务器 然后为客户端重新发送这些数据 客户端也将其写入控制台 我对 PrtintWriter 的刷新方法感到困惑 根据 JAVA 文档 该方法刷新流 经过一些研究 我逐渐

随机推荐

  • 用docker启动ubuntu的桌面环境

    在win10下使用了docker之后 xff0c 已经完全抛弃了之前虚拟机的开发方式 xff0c 在学习一些计算机视觉相关的内容时 xff0c 可能需要在图形化界面进行开发和调试 xff0c 所以尝试了下在dockerhub上搜索了下支持d
  • 使用Git Extensions直接push代码到Gerrit审核

    公司使用Gerrit代码审核 xff0c 本地push代码只能提交到refs for branch xff0c 所以使用git bash进行push时 xff0c 需要使用如下命令 git push origin HEAD refs for
  • C++避免变量重复定义

    C 43 43 小白选手 求轻拍 在A cpp B cpp文件中同时包含B h 这样的话在B h中的变量就会重复定义了 解决的办法是在B h中 变量前面加上extern关键字 在B cpp文件中再定义一次
  • 使用Eclipse编译运行MapReduce程序

    下载eclipse 64位 http eclipse bluemix net packages mars 1 JAVA LINUX64 解压到安装目录 安装 Hadoop Eclipse Plugin 要在 Eclipse 上编译和运行 M
  • 内部网盘phpdisk创建记录

    PHPDISK的这次创建是在PHPWIND8 7的基础上 xff0c 一起安装的 xff0c 所以单独安装PHPDISK所需要的RPM包就不需要再安装了 将PHPDISK解压缩后 xff0c UPLOAD文件夹里面的东西 xff0c 复制到
  • July 17th 模拟赛C T2 Number Solution

    空降题目处 外网 点我点我点我 空降题目处 内网 点我点我点我 Description 给出一个整数 xff0c 你可以对 进行两种操作 1 将x变成4x 43 3 2 将x变成8x 43 7 问 xff0c 最少通过多少次操作 xff0c
  • np.maximum vs np.minimum

    一直按照字面意思理解 xff0c 以为maxmum取最大值 examples 原来是有广播机制的 xff0e np maximum 取对应位置上的大值 xff0c np minimum 取对应位置上的较小值 xff0e import num
  • tensorflow通过模型文件,使用tensorboard查看其模型图Graph

    Google提供了一个工具 xff0c TensorBoard xff0c 它能以图表的方式分析你在训练过程中汇总的各种数据 xff0c 其中包括Graph结构 所以我们可以简单的写几行Pyhton xff0c 加载Graph xff0c
  • numpy中np.maximum的使用

    np maximum X Y out 61 None X和Y逐位进行比较 选择最大值 xff0c 最少接受两个参数 gt gt gt np maximum 2 3 4 1 5 2 array 2 5 4 gt gt gt np maximu
  • [svn]status命令

    wangyetao 64 linux u1604 LinuxRoom SVN FILE 个人空间 xx wangyetao 64 linux u1604 LinuxRoom SVN FILE 个人空间 xx svn help status
  • 维护型项目的管理

    最近 xff0c 一直在维护一个项目 项目很大 xff0c 有很多个系统相互配合 xff0c 且使用的语言也不一样 有JAVA写的系统 xff0c 有PHP写的 xff0c 各系统用的数据库也不一样 xff0c 还有一些我说不出来的技术 项
  • cas5.2.6 搭建cas服务端

    1 打包cas服务器端war包 下载cas overlay template 5 2 zip 1 1配置pom xml lt dependencies gt lt dependency gt lt groupId gt org apereo
  • PHP516 用phpize增加扩展PDO_OCI和OCI8

    环境 xff1a centos5 5 PHP5 1 6 oracle10 2 0 5 客户端 1 从oracle官网下载oracle客户端包 oracle instantclient basic 10 2 0 5 1 i386 rpm or
  • npm ERR! enoent This is related to npm not being able to find a file.解决

    一 问题描述 运行sudo npm install color name出现如下错误 xff1a npm ERR path root blog node modules color namenpm ERR code ENOENT npm E
  • ROS中最重要的变量$ROS_PACKAGE_PATH

    昨天刚成功安装了ardrone autonomy 和 tum ardrone xff0c 运行也是通过了 今天又尝试了一下昨天的命令 xff0c 结果发现tum ardrone居然又运行不了了 xff0c 郁闷 xff01 说是没有在环境变
  • 用TIKZ在LaTex中画图

    我之前是用Edraw max画图的 xff0c 但是有一个致命的问题就是在图上写字母的时候与图解释中不一致 xff0c 所以尝试了一下LaTex画图 xff0c 哎呀 xff0c 耗费我一下午的时间呀 首先导入包 xff1a usepack
  • NLP中三种特征抽取器的优与劣

    RNN LSTM GRU xff1a 缺点 xff08 1 xff09 xff1a 无法并行 xff0c 因此速度较慢 xff08 2 xff09 xff1a RNN无法很好地学习到全局的结构信息 xff0c 尤其对于序列结构很长的 CNN
  • python List中元素两两组合

    aa span class token operator 61 span span class token punctuation span span class token string 39 a 39 span span class t
  • JRE not compatible with project .class file compatibility: 1.7

    电脑上刚装了jdk1 7 xff0c 运行一般程序的时候没有出现什么问题 xff0c 由于内存不够用 xff0c 在设置虚拟内存时却出现问题 xff0c 如下 xff1a 还好找到了解决办法 xff0c 错误的原因是JRE库配置与Java
  • BufferedWriter 的 flush() 方法

    package com corpus import java io import java util List import edu stanford nlp ling HasWord import edu stanford nlp lin