黑马程序员技术交流社区

标题: IO流????? [打印本页]

作者: 韩秀山    时间: 2013-5-20 22:41
标题: IO流?????
public static void main(String[] args) throws IOException {
                // 使用字符流显示一个文本文件
                InputStreamReader in = new InputStreamReader(new FileInputStream(
                                "folder/个人信息(复制).txt"));
                int a;
                while ((a = in.read()) != -1) {
                        System.out.print((char)a);
                }
                OutputStreamWriter ut=new OutputStreamWriter(new FileOutputStream("folder/个人信息.txt"));
                ut.write("性别:男");
               
                ut.close();
                in.close();
        }

这段代码是使用输入流在一个文件中,写入信息!!我的问题是可不可以在指定的行 把 "性别:男" 添加进去?该如何实现??不可以请说一下原因????

作者: 谢孔营    时间: 2013-5-20 22:48
以前没这样弄过,也没见过,搞不了这个。
作者: 江大海    时间: 2013-5-20 23:38
本帖最后由 江大海 于 2013-5-20 23:42 编辑

应该可以的,用那个LineNumberReader
代码展示如下
  1. /*
  2. 在Demo.txt文件的第三行加入“性别”男行中加入性别:男
  3. */
  4. import java.io.*;
  5. class AddSex
  6. {
  7.         public static void main(String[] args) throws IOException
  8.         {
  9.                 FileReader fr = new FileReader("E:\\Demo.txt");//创建字符读取流对象,和要读取的文件相关联
  10.                 FileWriter fw = new FileWriter("E:\\Demo2.txt");//创建字符写入流对象,说明要存储的位置
  11.                 BufferedWriter bufw = new BufferedWriter(fw);//加入缓冲技术
  12.                 LineNumberReader lnr = new LineNumberReader(fr);//用这个是可以直接显示行数,可以在需要的行里进行操作
  13.                 String len = null;
  14.                 while ((len=lnr.readLine())!=null)
  15.                 {
  16.                         if (lnr.getLineNumber()==3)//加入读到的行数是第三行,就在前面加入需要的内容,性别:男,
  17.                         {
  18.                                 bufw.write("性别:男");//额,。。。代码是丑了点,也没有优化,忘记String中是否有加到前面的方法了,
  19.                                 bufw.write(len);
  20.                                 bufw.newLine();
  21.                                 
  22.                         }
  23.                         else
  24.                                 bufw.write(len);
  25.                                 bufw.newLine();

  26.                 }
  27.                 bufw.close();
  28.                 lnr.close();//关闭资源时

  29.         }
  30. }


  31.                                                                                                                                                           -----------来自黑马云青年    大大海
复制代码

作者: xiewen    时间: 2013-5-20 23:49
本帖最后由 xiewen 于 2013-5-20 23:53 编辑
江大海 发表于 2013-5-20 23:38
应该可以的,用那个LineNumberReader
代码展示如下

你写的挺好的
                  黑马云青年为您解答
作者: 韩秀山    时间: 2013-5-21 00:33
江大海 发表于 2013-5-20 23:38
应该可以的,用那个LineNumberReader
代码展示如下

好吧  谢谢你  复制你的代码  出现点小小的错误 我不知道在哪里出错了,也可能是我复制好的原因吧。我自己在研究研究吧
作者: 逝者轨迹    时间: 2013-5-21 06:32
把上面的代码if里的代码顺序稍微调整一下就没问题了:

bufw.write("性别:男");

bufw.newLine();

bufw.write(len+1);




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2