java学到io了,头也开始晕了!感觉很难学我想问问以下几个问题:如何学好java的io(输入输出)?字符流和字节流的用法?Stream 流在java中是一个什么样的概念?如何理解"流"?如何来区别这些类之间的关系?

解决方案 »

  1.   

    学好io吗,应该和学其他部分一样,多练练手,至于流,个人理解应该就是你输入输出的数据啊,或者说是你的数据在传输过程中的方式
    字符流与字节流的不同点在于,字节流按照8位的字节来读取数据,而字符流则按照16位的Unicode来读取数据
      

  2.   

    马士兵的视屏+java编程思想……
      

  3.   

    想初步学好io首先要理顺各个常用类字节流:
    InputStream、OutputStream:字节流,早期JAVA版本已存在;【byte】类型
    FileInputStream、FileOutputStream:文件字节流;【byte】类型
    BufferedInputStream、BufferedOutputStream:字节流,为InputStream、OutputStream增加缓冲区功能
      【byte】类型字符流:
    Reader、Writer:基于字符流,JAVA后来补充;【char】类型
    FileReader、FileWriter:文件字符流;【char】类型
    BufferedReader、BufferedWriter:是Reader、Writer的子类,操作的是字符串流,使用前先创建字符流,
                                   再创建字符串流,并且具有缓冲作用,避免了频繁的从物理设备中读取                             信息;【string】类型
    字节流转换成字符流:
    InputStreamReader、OutputStreamWriter:用于将字节流转换成字符流,是字节流与字符流之间的桥梁;
                                          【byte】—>【char】
      

  4.   

    看Thingk in java第一版吧,我当初都是这样一步一步来的,现在觉得这个Io流只要理解意思就不难....
      

  5.   

    看《Java Core》或者《Thinking in Java》里面IO那一块,都挺不错的,把Java的IO学好了能让你的Java水平有很大的提高,上一个档次。
      

  6.   

    package io;import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;public class FileInOutPutStreamDemo {
    File f=new File("e:\\abc.txt");
    public static void main(String[] args) {
    FileInOutPutStreamDemo io=new FileInOutPutStreamDemo();
    io.outPutFile("邪恶少年今天到此一游!");
    io.inPutFile();
    }
    private void inPutFile() {
    // TODO Auto-generated method stub
    try {
    FileInputStream fis=new FileInputStream(f);
    int temp=0;
    String test="";
    try {
    while ((temp=fis.read())!=-1) {
    test+=(char)temp;
    }
    System.out.println(new String(test.getBytes("iso-8859-1")));
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    private void outPutFile(String content) {
    // TODO Auto-generated method stub
    if (f.exists()==false) {
    try {
    f.createNewFile();
    FileOutputStream fos=new FileOutputStream(f);
    fos.write(content.getBytes());
    fos.flush();
    fos.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
      

  7.   

    package io;import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Reader;
    import java.io.Writer;public class WriterAndReaderDemo {
    File f=new File("e:\\dnf.txt");
    public static void main(String[] args) {
    WriterAndReaderDemo io=new WriterAndReaderDemo();
    io.writeFile("邪恶少年今天很是不爽!");
    io.readFile();
    }
    private void readFile() {
    // TODO Auto-generated method stub
    try {
    Reader r=new BufferedReader(new FileReader(f));
    int temp=0;
    String test="";
    try {
    while ((temp=r.read())!=-1) {
    test+=(char)temp;
    }
    System.out.println(test);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    private void writeFile(String content) {
    // TODO Auto-generated method stub
    if (f.exists()==false) {
    try {
    f.createNewFile();
    Writer fw=new FileWriter(f);
    fw.write(content);
    fw.flush();
    fw.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
      

  8.   

    package io;import java.io.EOFException;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    public class ObjectInOutStreamDemo {
    String path="e:\\planda.cc";
    public static void main(String[] args) {
    ObjectInOutStreamDemo io=new ObjectInOutStreamDemo();
    io.outPutObject();
    io.inPutObject();
    }
    private void inPutObject() {
    // TODO Auto-generated method stub
    try {
    ObjectInputStream ois=new ObjectInputStream(new FileInputStream(path));
    Object obj;
    Planda p;
    try {
    while ((obj=ois.readObject())!=null) {
    p=(Planda)obj;
    System.out.println(p.getId()+"号熊猫是"+p.getName());
    }
    }catch (EOFException e) {
    // TODO: handle exception
    }
    catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    private void outPutObject() {
    // TODO Auto-generated method stub
    Planda p1=new Planda(100,"团团");
    Planda p2=new Planda(200,"圆圆");
    try {
    ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(path));
    oos.writeObject(p1);
    oos.writeObject(p2);
    oos.flush();
    oos.close();
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    class Planda implements Serializable{
    private int id;
    private String name;
    public Planda(int id,String name) {
    // TODO Auto-generated constructor stub
    this.id=id;
    this.name=name;
    }
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    }
      

  9.   


    总结的不错,但是这个结合《java与模式》去学习,这样即学习了模式也增加了对IO的理解!
      

  10.   

    看看InputStream、OutputStream的源代码就知道,其实他们的定义十分简单。个人感觉是对一种“长时间,且时断时续读出或者写入信息”的抽象。 初学的时候容易被他们的中文翻译名字所误导。
      

  11.   

    不用那么麻烦,用到类也不多。
    常用的:
    InputStream OutputStream
    字节类型的:  DataInputStream DataOutputStream
    字符类型的: java.util.Scanner PrintWriter
    偶尔将内在字符串转换成流的形式用:CharArrayReader CharArrayWriter就这些通常足够用了,其它都是浮动。
      

  12.   

    我觉得没必要弄那么清楚,有需要的找帮助文档
    你不可能把JAVA的所有类之间的关系都记住吧,看帮助文档和源码才是王道
      

  13.   

    马士兵的IO讲的还是挺形象的,比较容易理解。
    thinking in java 里的IO也不错。
    看完应该会理解的。