java中如何从txt文件中一行一行读取汉字,再存到另一txt文件中

如题所述

首先用FileReader fileReader=new FileReader(路径)来创建一个节点流,
然后用BufferedReader reader=new BufferedReader(fileReader),以BufferederReader处理流来包装这个节点流,然后调用 BufferedReader类里面的readLine()方法就可以一行一行地读了。
至于存到另一个txt文件中,
你把上面输入流读到的东西放到一个字符串Strng 里面,然后用FileWriter类建立对象,用它的write(String str)方法一次写到目标文件就可以了。追问

可以帮我看看哪里错了吗

追答

这你先要告诉我,现在有什么跟你预期不一致的地方耶。。瞄了下你给楼上的留言,为啥上面你跟他说你只读到一行,下面你就不跟我说呢,这不公平= =。。。
你可以试下这样写:
String message="",temp;
while((temp=reader.readLine())!=null)
{
message+=temp;
}
不过行与行之间不会换行,因为每次读到的都是一行的内容,不含换行符,你可以在temp后面再加多个换行符。

另外错误不是应该用:System.err.println();吗,还有关闭的应该是上级的流,br和bw

追问

就是能读到第一行的内容第二行以后的就读不到啊,还有怎样将最后的结果保存到另一个文档中啊

追答

只读到第一行内容是因为你只执行了一次 line=br.readLine(),你应该放到循环结构里面。好像我回答那样,reader对等于你的br。
至于保存,你没必要用BufferedWriter来包装FileWriter,用FileWriter的writer(String str),把一次读到的内容一次写到目标文件就可以了,如果你发现你写的文件内容为空,那是因为你没有关闭bw流。

追问

现在读取没问题了,但仍然保存不了,可以帮我就下面的代码修改一下吗?谢谢
if(e.getSource() == noteSave){
try
{
FileOutputStream notelist = new FileOutputStream("input.txt");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(notelist));
String line = null;
while(true){
bw.write(line+"\n");
if(line == null)
{
break;
}
catch{
}

追答

这当然写不了啦,bw.write(String str),这里的str就是写进文件(txt)的内容,比如说bw.write("Hello"),那么写完之后你打开txt,看到的就是Hello。
你这里的String line=null,说明你这个字符串是null(待定义),而你接下来的循环里面if(line==null),这样循环就直接跳出去了,因为你的line本来就是null。
按照我之前说的那个思路,比如你读入的文本叫read.txt,内容为:
你好,
今天天气不错。
那你一行一行读这个文本,第一行为"你好,",第二行为“今天天气不错。”。你用一个字符串拼接这两个内容就是"你好,"+"\n"+"今天天气不错。”,然后把这个内容写入,bw.write(""你好,\n今天天气不错。”"),这样完成从一个文本读,然后写到另一个文本中了。
最后记得关闭bw流。

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-20

BufferedReader 一行一行的读

PrintWriter 一行一行的写

        try(BufferedReader reader = Files.newBufferedReader(Paths.get("D:\\Temp","天下无双.txt"), Charset.forName("GBK"));
            PrintWriter writer = new PrintWriter("D:\\Temp\\天下无双U.txt", "UTF-8")){
            for(String line = reader.readLine(); line != null; line = reader.readLine()){
                writer.println(line);
            }
        }catch(IOException xe){
            System.err.println(xe.getMessage());
        }

第2个回答  2013-01-04
直接bufferedReader readLine 方法就行了啊?这个和汉字不汉字没关系啊
相似回答