这几天做编译原理一个练习题,需要用到文件读写的知识。费了好大力气才把文本指定的各种单词转化为了大写,然后在写入文件的时候又出现了新问题,因为我写文件的时候用的bufferedwriter,首先遇到了两个问题,把指定内容写入了文本文档,却发现文本没有换行,而原文件是有换行的;而且写中文的时候会出现乱码。后来通过各种搜索还有自己的尝试,把这两个问题解决了。第一个我在写的时候用bw.write(10)或者bw.write("\n")支持换行,也可以用newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 ('\n') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。 ;支持中文显示用bw.write(13),不过这个不够完美,要是别的国家的文字编码又怎么办,后来我看到了一种方式,是用先new一个outputstreamwriter,在构造函数的时候指定其编码方式即可,比如OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file), "UTF-8")。同样像这样也可以解决bufferedReader读入乱码问题,这里我就不啰嗦了。这两个问题解决了又出现了一个新的问题,就是我在把读入的内容写入文件的时候,这个时候写进去的文件内容居然为空!我又查了API文档,bufferedWriter的write方法我并没有弄错啊,为什么会是这样。我又看了bufferedWriter的其它方法,其中有一个flush()方法, flush是刷新该流的缓冲,就是将缓冲区里的内容全部刷出去,在write之后再调用这个方法,文本内容全写进去了,搞定!
j2se bufferedwriter问题
最新推荐文章于 2025-02-06 21:15:32 发布