solimh 发表于 2011-2-22 10:33:43

JAVA 私塾第十三章笔记整理

JAVA 私塾第十三章笔记整理

第十三章I/O流

    JDK所提供的所有流类型,都位于java.io包内都分别继承自以下四种抽象流类型:
字节流字符流输入流InputStreamReader输出流OutputStream Writer

    节点流和处理流
      节点流可以从一个特定的数据源读写数据。
      处理流是连接在已存在的流之上,通过对数据的处理为程序提供更强大的读      
      写功能。
      【此处有图片,可以到JAVA 私塾官网下载完整笔记:w ww.javass.cn】

      继承自InputStream的流都是用于向程序中输入数据的,且数据的单位为字节(8bit),上图中深色为节点流,浅色为处理流

      InputStream的方法:
             三个read方法
                int read():读取一个字节,以整数的形式返回,如返回-1,则表示以到输入流的末尾。
                int read(byte[]):读取一系列字节,返回读取的字节数,如返回-1,则表示以到输入流的末尾。
                int read(byte[], int, int):读取一系列字节,返回读取的字节数,如返回-1,则表示以到输入流的末尾。Int,int用于定义读取字节数组的范围。

                void close():关闭流
                skip(long):跳过n个字节不读,返回实际跳过的字节数。

       继承自OutputStream的流适用于程序输出数据的,且数据的单位为字节(8bit),上图中深色为节点流,浅色为处理流
       【此处有图片,可以到JAVA 私塾官网下载完整笔记:w ww.javass.cn】

      void write(int)
      void write(byte[])
      void write(byte[],int,int)
      void close()
      void flush()将缓冲区的数据全部写到目的地。

      继承自InputStream的流都是用于向程序中输入数据的,且数据的单位为字节(16bit),上图中深色为节点流,浅色为处理流
       【此处有图片,可以到JAVA 私塾官网下载完整笔记:w ww.javass.cn】

      Reader的方法:
            三个read方法
                int read():读取一个字节,以整数的形式返回,如返回-1,则表示以到输入流的末尾。
                int read(byte[]):读取一系列字节,返回读取的字节数,如返回-1,则表示以到输入流的末尾。
                int read(byte[], int, int):读取一系列字节,返回读取的字节数,如返回-1,则表示以到输入流的末尾。Int,int用于定义读取字节数组的范围。

                void close():关闭流
                skip(long):跳过n个字节不读,返回实际跳过的字节数。

       继承自Writer的流适用于程序输出数据的,且数据的单位为字节(16bit),上图中深色为节点流,浅色为处理流
       【此处有图片,可以到JAVA 私塾官网下载完整笔记:ww w.javass.cn】

      void write(int)
      void write(byte[])
      void write(byte[],int,int)
      void close()
      void flush()将缓冲区的数据全部写到目的地。

FileInputStream
import java.io.*;
public class TestFileInputStream {
   public static void main(String[] args) {
      int b = 0;
      FileInputStream in = null;
      try {
         in = new FileInputStream("e:/TestFileInputStream.java");
      } catch (FileNotFoundException e) {
         System.out.println("找不到指定文件");
         System.exit(-1);
      }
   
      try {
         long num = 0;
         while((b=in.read())!=-1){
            System.out.print((char)b);
            num++;
         }
         in.close();
         System.out.println();
         System.out.println("共读取了 "+num+" 个字节");
      } catch (IOException e1) {
      System.out.println("文件读取错误"); System.exit(-1);
      }
   }
}共读取了 700 个字节

FileOutputStream
import java.io.*;
public class TestFileOutputStream {
   public static void main(String[] args) {
      int b = 0;
      FileInputStream in = null;
      FileOutputStream out = null;
      try {
         in = new FileInputStream("e:/TestFileInputStream.java");
         out = new FileOutputStream("e:/1.java");
         while((b=in.read())!=-1){
            out.write(b);
         }
         in.close();
         out.close();
      } catch (FileNotFoundException e2) {
         System.out.println("找不到指定文件"); System.exit(-1);
      } catch (IOException e1) {
         System.out.println("文件复制错误"); System.exit(-1);
      }
      System.out.println("文件已复制");
   }
}FileReader
import java.io.*;
public class TestFileReader {
   public static void main(String[] args) {
      FileReader fr = null;
      int c = 0;
      try {
         fr = new FileReader("e:/TestFileReader.java");
         int ln = 0;
         while ((c = fr.read()) != -1) {
            System.out.print((char)c);
         }
         fr.close();
      } catch (FileNotFoundException e) {
         System.out.println("找不到指定文件");
      } catch (IOException e) {
         System.out.println("文件读取错误");
      }
   }
}FileWriter
import java.io.*;
public class TestFileWriter {
   public static void main(String[] args) {
      FileWriter fw = null;
      try {
         fw = new FileWriter("e:/sunicode.dat");
         for(int c=0;c<=50000;c++){
            fw.write(c);
         }
         fw.close();
      } catch (IOException e1) {
            e1.printStackTrace();
      System.out.println("文件写入错误");
      System.exit(-1);
      }
   }
}BufferedStream
import java.io.*;
public class TestBufferStream{
public static void main(String[] args) {
    try {
      BufferedWriter bw = new BufferedWriter(new FileWriter("e:/2.java"));
      BufferedReader br = new BufferedReader(
             new FileReader("e:/1.java"));
      String s = null;
      for(int i=1;i<=100;i++){
      s = String.valueOf(Math.random());
      bw.write(s);
      bw.newLine();
      }
      bw.flush();
      while((s=br.readLine())!=null){
      System.out.println(s);
      }
      bw.close();
      br.close();
    } catch (IOException e) { e.printStackTrace();}
}
}简述File类的基本功能
        处理文件和获取文件信息,文件或文件夹的管理
        除了读写文件内容其他的都可以做

代码示例:如何使用随机文件读写类来读写文件内容
    RW表示文件时可读写的
       读:
try{
    RandomAccessFile f = new RandomAccessFile("test.txt", "rw");
    long len = 0L;
    long allLen = f.length();
    int i = 0;
    while (len < allLen) {
      String s = f.readLine();
      if (i > 0) {
          col.add(s);
      }
      i++;
      //游标
      len = f.getFilePointer();
    }
}catch(Exception err){
    err.printStackTrace();
}

写:

try{
    RandomAccessFile f = new RandomAccessFile("test.txt", "rw");
    StringBuffer buffer = new StringBuffer("\n");
    Iterator it = col.iterator();
    while (it.hasNext()) {
      buffer.append(it.next() + "\n");
    }
    f.writeUTF(buffer.toString());
}catch(Exception err){
   err.printStackTrace();
}

代码示例:如何使用流的基本接口来读写文件内容
import java.io.*;
public class Test{
public static void main(String args[]){
   String currentLine;
   try{
      DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream("Test.java")));
      while ((currentLine = in.readLine()) != null)
         System.out.println(currentLine);
      }catch (IOException e) {
         System.err.println("Error: " + e);
      } // End of try/catch structure.
   } // End of method: main
} // End of class

宋中 发表于 2011-2-22 18:57:41

感谢楼主分享!

页: [1]
查看完整版本: JAVA 私塾第十三章笔记整理