zoukankan      html  css  js  c++  java
  • java的IO总结(一)

          Java的IO流是实现输入输出的基础,这里所说的流就是数据流,大部分的与流相关的类放在Java.io包下。

    一,Java的流分类

         按照不同的分类方式可以把流分成不同的类型,下面我们从不同的角度对流进行分类。

         1,按照流的方向可以分为输入流与输出流

          输入流:只能从中读取数据,而不能向其写出数据

          输出流:只能向其写出数据,而不能从中读数据。     2,字节流与字符流

        字节流主要是以InputStream和OutputStream为基类,其对应子类有FileInputStreamFileOutputStream实现文件读写,BufferedInputStreamBufferedOutputStream提供缓冲区功能,操作的最小单位数据是8位的字节。字符流主要是以Reader和Writer为基类,其对应子类FileWriterFileReader可实现文件的读写操作,BufferedWriterBufferedReader能够提供缓冲区功能,用以提高效率,操作的最小的单位数据是16位的字符。

        3,节点流与处理流

        节点流:可以从/向一个特定的IO设备中读/写数据流。程序直接和数据源(物理节点)相连接。

        处理流:对节点流进行包装,他可以隐藏底层设备之间的差异,对外提供了更好的输入/输出方法。

    字符流

    实例1:字符流的写入

    public class FileInputStreamTest {
    
        public static void main(String[] args)  throws IOException
        {
            FileWriter fw = null;
            try
            {
                fw = new FileWriter("D:\javaPro\ioJava\xin.txt");
                fw.write("你说的话,我都不听
    ");
                fw.write("让着故事延长
    ");
            }  catch(IOException e)
            {
                e.printStackTrace();
            }  finally
            {
                if(fw!=null)
                {
                    fw.close();
                }
            }
        }
    }

    实例2:字符流的读取

    public class ReadStreamTest {
    
        public static void main(String[] args) throws  IOException
        {
            FileReader fr= null;
            try
            {
                fr = new FileReader("D:\javaPro\ioJava\ha.txt");
                char[] ch = new char[1024];
                int num;
                while ((num = fr.read(ch))!= -1)
                {
                    System.out.println(new String(ch,0,num));
                }
            }   catch (IOException e)
            {
                  e.printStackTrace();
            }  finally {
                if(fr!=null)
                {
                    fr.close();
                }
            }
        }
    }

    实例3:字节流的写入

    public class OutPutTest {
    
        public static void main(String[] args) throws IOException
        {
            FileInputStream fi = null;
            FileOutputStream fo = null;
            try
            {
                 fi = new FileInputStream("D:\javaPro\ioJava\ha.txt");
                fo= new FileOutputStream("D:\javaPro\ioJava\xin.txt");
                byte[] by = new byte[1024];
                int num;
                while((num = fi.read(by))!=-1)
                {
                      fo.write(by,0,num);
                }
            }  catch(IOException e)
            {
                  e.printStackTrace();
            } finally
            {
                if(fi!=null)
                {
                    fi.close();
                }
                if(fo!=null)
                {
                   fo.close();
                }
            }
        }
    }

    实例4:字节流的读取

    public class Test {
        public static void main(String[] args) throws IOException
        {
            String str = "D:\javaPro\ioJava\ha.txt";
            FileInputStream f;
            f = new FileInputStream(str);
            byte[] temp1 = new byte[1024];
            int num;
            while ((num = f.read(temp1))>0)
            {
                System.out.println(num);
                System.out.println(temp1);
                System.out.println(new String(temp1,0,num));
            }
            f.close();;
        }
    }

    以上使用的都是节点流的例子,下面来看一个处理流的例子

    实例5:处理流

    public class FileInputStreamTest {
    
        public static void main(String[] args)  throws IOException
        {
             PrintStream ps = null;
            try
            {
                //  创建一个节点流
                FileOutputStream fs = new FileOutputStream("D:\javaPro\ioJava\xin.txt");
                //   用 PrintStream来包装 FileOutputStream输出流
                ps = new PrintStream(fs);
                //  使用  PrintStream来执行输出
                ps.println("普通字符");
                //  直接使用 PrintStream输出对象
                ps.println(new FileInputStreamTest());
    
            }  catch(IOException e)
            {
                e.printStackTrace();
            }  finally
            {
                if(ps!=null)
                {
                    ps.close();
                }
            }
        }
    }

    从上面可以看出来程序使用处理流非常简单,只需要在创建处理流时传入一个节点流作为构造函数的参数,这样创建的处理流就是包含了节点流的处理流。。。

  • 相关阅读:
    初认识AngularJS
    (imcomplete) UVa 10127 Ones
    UVa 10061 How many zero's and how many digits?
    UVa 11728 Alternate Task
    UVa 11490 Just Another Problem
    UVa 10673 Play with Floor and Ceil
    JSON对象和字符串的收发(JS客户端用typeof()进行判断非常重要)
    HTML.ActionLink 和 Url.Action 的区别
    EASYUI TREE得到当前节点数据的GETDATA方法
    jqueery easyui tree把已选中的节点数据拼成json或者数组(非常重要)
  • 原文地址:https://www.cnblogs.com/duhuo/p/4204809.html
Copyright © 2011-2022 走看看