2011-08-30 交作业(java io 文件基本操作)

来源:互联网 发布:淘宝店没有销量怎么办 编辑:程序博客网 时间:2024/05/16 07:56

今天基本完成了老师布置的作业。刚开始觉得并不难,自己也有编程思路可后来编写起来麻烦不断。先看一下今天的作业代码吧,作业题目是:复制一个文件里面的内容

到令一个文件里面。

import java.io.*;//生成的文件多俩字节。class TestBufferedReader{public static void main(String[] args) {BufferedReader br=null;BufferedWriter bw=null;try{br=new BufferedReader(new FileReader("e:\\Java\\java_biji\\TestFileWriter.txt"));bw=new BufferedWriter(new FileWriter("e:\\Java\\java_biji\\TestBufferedReader.txt"));String str=br.readLine();while(str!=null){bw.write(str);bw.flush();bw.newLine();str=br.readLine();}}catch(IOException e){System.out.println(e.toString());}finally{if(br!=null)try{br.close();}catch(IOException e){System.out.println(e.toString());}if(bw!=null)try{bw.close();}catch(IOException e){System.out.println(e.toString());}}}}


 

遇到的问题是:1、生成的文件比原来的文件多两个字节。(明天问老师解决)

2、BufferedReader中的readLine()的使用。(解决:记住只要你写了readLine(),程序就读取了下一行的内容。

 

 


第二个作业:自己写个类实现readLine()方法并在每行开头加上是第几行的标记如下图: 

看一下我的代码:

import java.io.*;class MyLineNumberReader {Reader r;int i;public MyLineNumberReader(Reader r){//构造方法this.r=r;}public String readLine(){//readerLine方法StringBuffer sb=new StringBuffer();try{int chaR=r.read();while(chaR!=-1){//if((char)chaR=='\r'){//和老师的不同//continue;//}if((char)chaR=='\n'){i++;return new String(i+"  "+sb);}else{sb.append((char)chaR);chaR=r.read();}}if(sb.length()!=0){return new String(i+1+"  "+sb);}}catch(IOException e){System.out.println(e.toString());}return null;}public void close(){//关闭流方法try{r.close();}catch(IOException e){System.out.println(e.toString());}}public static void main(String[] args) {try{MyLineNumberReader mlnr=new MyLineNumberReader(new FileReader("e:\\Java\\java_biji\\TestFileWriter.txt"));String str=mlnr.readLine();while(str!=null){System.out.println(str);str=mlnr.readLine();}}catch(IOException e){System.out.println(e.toString());}}}


通过第二题了解了转义字符“\n”和"\r"的区别和联系:

\r是回车,即光标移动到本行的最左面      \n是换行,即光标移动到下一行。  

windows中的"回车"是\r+\n;
我写的时候就判断了\n就能实现判断是否读取完了一行,但老师也用了\r  (也就是代码中注释的三条语句)。尽量问问老师吧。

原创粉丝点击