io学习的完结

今晚把io的最后一小段视频学习完了,感觉对io真的已经有点陌生了。看来以后要在io这块下狠功夫了,明天开始学习网络编程的视频。

 

视频学完了,这几个练习题都不能一下子解答出来,io需要加强。

 

字节输入流类:
InputStream
  FileInputStream
  ObjectInputStream
  PipedInputStream
  SequenceInputStream
  FilterInpuStream
    DataInputStream
    PushbackInputStream
    BufferedInputStream
    LineNumberInputStream
  StringBufferInputStream
  ByteArrayInputStream

OutputStream
  FileOutputStream
  ObjectOutputStream
  FilterOutputStream
    DataOutputStream
    BufferedOutputStream
    PrintStream
  PipedOutputStream
  ByteArrayoutputStream

Reader
  BufferedReader
    LineNumberReader
  CharArrayReader
  StringReader
  InputStreamReader
    FileReader
  PipedReader
  FilterReader
    PushbackReader

Writer
  BufferedWriter
  CharArrayWriter
  StringWriter
  OutputStreamWriter
    FileWriter
  PrintWriter
  PipedWriter
  FilterWriter


Decorater设计模式:
  在程序中用一个对象(the Decorators)包装另外的一个对象,这是一种被称为Decorator的设计模式。
  如果要设计自己的io包装类,这个类需要继承以FilterXXX命名的类,例如,设计一对输入输出包装类:RecordInputStream和RecordOutputStream,来完成从数据库文件中读取记录和往数据库文件中写入记录。
  Exception类从Throwable类继承的三个printStackTrace方法的定义如下:
    -public void printStackTrace()
    -public void printStackTrace(PrintStream s)
    -public void printStackTrace(PrintWriter s)
该如何把printStackTrace方法打出的详细异常信息存储到一个字符串中?
public class TestPrintWriter{
  public static void main(String[] args){
    try{
      throw new Exception("test");
    }catch(Exception e){
      //异常信息只能写入PrinrWriter
      StringWriter sw = new StringWriter();
      PrintWriter pw = new PrintWriter(sw);
      e.printStackTrace(pw);
      System.out.println(e.getMessage());
      //System.out.println(sw.toString());
    }
  }
}


思考与实践(1):
  1.编写一个程序,将一个目录极其子目录下的所有txt类型的文本文件中的内容合并到若干个新的文本文件中,当第一个新产生的文件中存储的内容达到1m bytes时,剩下的内容存储到第二个新的文件中,依次往下,新产生的文本文件名依次为1.txt,2.txt,......。
  2.用自己的话叙述什么是流,什么是节点流,什么是包装类。
  3.编写一个函数,把StringReader输入流中所有英文字母变成大写字母,并将结果写入到一个StringWriter输出流对象中。然后,用这个函数将一个字符串中的所有字符转换成大写。
  4.用记事本程序创建一个内容只有“中国”这两个字符的文本文件,然后用不同的编码格式分别保存这个文本文件。用UntralEdit打开这些不同编码格式的文件,并用十六进制方式查看它们的内容,结合你所看到的内容来叙述各种编码格式之间的差异。

思考与实践(2):
  5.编写下面的程序代码,分析和观察程序的运行结果:
    import java.io.*;
   
    public class InputReader{
        public static void main(String[] args){
            try{
                InputStreamReader isr = new InputStreamReader(System.in, "ISO-8859-1");
                BufferedReader br = new BufferedReader(isr);
                String strLine = br.readLine();
                for(int i=0;i<strLine.length();i++){
                  System.out.println(Integer.toHexString((int)strLine.charAt(i)));
                }
                isr.close();
                System.out.println(strLine);
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }

    输入“中国”后,程序的运行结果如下:
    d6
    d0
    d9
    fa
    ???u
    请按照下面的两种要求修改上面的程序代码,让程序能够正常打印出输入的中文字符。
    (1)修改程序中的语句:
         InputStreamReader isr = new InputStreamReader(System.in, "ISO-8859-1");
     (2)不修改上面的语句,而是修改下面的语句:
         System.out.pritnln(strLine);
      (1)是修改成InputStreamReader isr = new InputStreamReader(System.in, "gb2312");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值