BufferedReader
InputStreamReader
FileInputStream
DataInputStream
OutputStreamWriter1 这几个类有什么区别呢,分别怎么用呢,2 现我想向 D:\demosun\demosu.txt 这文件中写入一行文字,怎么实现呢
3 现我想把 D:\demosun\demosu.txt 这文件中的内容读出来  怎么实现呢
thanks

解决方案 »

  1.   

    4 字节流有哪些,字符流又有哪些,分别怎么用呀,thanks
      

  2.   

    具体怎么用你好好去看看API手册,帮你写了个例子。package com.study.io;import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;public class ReadAndWriteFile { public static void main(String[] args) {
    //写文件
    writeFile("文件路径", "文件内容");
    //读文件
    readFile("文件路径");
    }

    public static void readFile(String path){
    BufferedReader reader = null;
    try {
    reader = new BufferedReader(new FileReader(""));
    while(true){
    String line = reader.readLine();
    if(line == null){
    break;
    }
    System.out.println(line + "\n");
    }
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally{
    if(reader != null){
    try {
    reader.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }

    public static void writeFile(String path, String content){
    BufferedWriter writer = null;
    try {
    writer = new BufferedWriter(new FileWriter(""));
    writer.write(content);
    writer.flush();
    } catch (IOException e) {
    e.printStackTrace();
    } finally{
    if(writer != null){
    try {
    writer.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }
    }
      

  3.   

    原理:http://www.iteye.com/topic/313635
    实践:http://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html
      

  4.   

    字节流和字符流 在整个IO包中,流的操作就分为两种:字节流:字节输出流OutputStream,字节输入流InputStream字符流(一个字符等于两个字节):字符输出流Writer,字符输入流是ReaderIO操作的基本步骤1,使用File找到一个文件2,使用字节流和字符流的子类为OutputStream,InputStream,Writer,Reader进行实例化操作3,进行读或写操作4,关闭:close(),在流的操作中最终必须进行关闭在java中"\r\n"表示换行 字节输出输入import java.io.*; public class OutputStreamDemo {public static void main(String args[]) throws IOException{ //写入数据 File file=new File("d:"+File.separator+"demo.txt"); OutputStream out=new FileOutputStream(file,true);//在文件后追加 String str="hello world"; byte b[]=str.getBytes(); out.write(b); out.close(); //读取数据 File file1=new File("d:"+File.separator+"demo.txt"); InputStream in=new FileInputStream(file1); byte[] by=new byte[(int)file.length()];//根据文件大小开辟字节空间 in.read(by); System.out.println(by.toString());} }字符输出输入
    import java.io.*;
    public class WriterDemo {
    public static void main(String args[]) throws IOException
    {
    //字符写入
    File file=new File("d:"+File.separator+"demo.txt");
    Writer writer=new FileWriter(file);
       String str="hello world!";
       writer.write(str);
       writer.close();
       //字符读取
       File file1=new File("d:"+File.separator+"demo.txt");
            Reader read=new FileReader(file1);
            char[] ch=new char[(int)file1.length()];
            read.read(ch, 0, (int) file1.length());
            System.out.println(ch.toString());
            read.close();
    }
    }
    字节流在操作的时候是直接与文件本身关联,不使用缓冲区,字节直接存到文件中;字符流在操作的时候是通过缓冲区与文件操作,字符到缓冲区然后再到文件中,所以字符流中存在一个flush()方法来刷新缓冲区。
    综合比较来讲,在传输或者在硬盘上保存的内容是以字节的形式存在的,所以字节流的操作较多,但是在操作中文的时候字符流比较好用。package cn.tsp2s.liu.liubao;import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;/**
     *
     * @author Administrator
     */
    public class TestBufferedReader {
        public static void main(String[] args){
            FileReader in=null;
            BufferedReader read=null;
            String s=null;
            BufferedWriter writer=null;
            try {
                in = new FileReader("d:\\java\\TestLeap.java");
                read=new BufferedReader(in);
                writer=new BufferedWriter(new FileWriter("d:\\java\\leap.txt"));
                while ((s = read.readLine()) != null) {
                   // System.out.println(s);
                    writer.write(s);
                    //这里调用newline()方法是让它输出和读取的完全一致,理由不解释
                    writer.newLine();
                    //这里一定要调用flush()方法,如果不调用,文件中将会显示不全或者压根就不显示任何东西,理由不解释,你肯定知道
                    writer.flush();     
                }
            } catch (FileNotFoundException ex) {
                System.out.println("找不到指定文件!!");
            }catch (IOException e) {
                System.out.println("文件读取有误!");
            }finally{
                try {
                    writer.close();
                    read.close();
                } catch (IOException ex) {
                    System.out.println(ex.getMessage());
                }
            }
        }

    字节流(以stream结尾)
    InputStream 
    OutputStream
    FileInputStream
    FileOutputStream
    DataInputStream
    DataOutputStream
    BufferedInputStream
    BufferedOutputStream
    printStream
    字符流(以er结尾)
    Reader
    Writer
    InputStreamReader
    OutputStreamWriter
    FileReader
    FileWriter
    BufferedReader
    BufferedWriter
    printWriter
    RandomAccessFile  随机访问流