zoukankan      html  css  js  c++  java
  • java流快速掌握

    在java中定义了多个流类:按照流的方向分为输入流和输出流;按照处理数据单位的不同分为字节流和字符流;按照处理的功能不同分为节点流和处理流。java中的流很多,但是常用的不多。最常用的java流有FileInputStream、FileOutputStream、FileReader、FileWriter。从input和output我们可以知道这四个流中谁是输入流谁是输出流,以Stream为后缀的为节点流,以Reader为后缀的为处理流。所谓处理流就是指在节点流或处理流上在套接一个流,节点流就好比是一个水管,处理流是比套在节点流这个水管上的更粗的水管。在处理流中最常用的还有BufferedReader和BufferedWriter。下面通过例子来看看这几个流的功能:这几个例子的注释非常详细,所以我就不多介绍了。

    先看一个有关文件的例子:

    package com.dr.inoutput; 
    
    import java.io.File;
    import java.io.IOException; 
    
    public class Demo0 {
        public static void main(String args[]) throws IOException
        {
    //        File f=new File("e:"+File.separator+"aa"+File.separator+"abc.txt");//在任何系统状态下建立文件句柄
    //        File f=new File("e:\\aa\\abc.txt");//在windows系统下建立文件句柄
            File f=new File("e:/aa/abc.txt");//适用于Unix系统
            f.createNewFile();//创建文件
            System.out.println(f.getName());//得到文件的名称
            System.out.println(f.getAbsolutePath());//得到文件的绝对路径
            System.out.println(f.isFile());//判断文件是不是标准文件
            System.out.println(f.isDirectory());//判断文件是不是目录
            /**//*
             * 判断文件是否存在,如果存在则删除,如果不存在则新建
             */
            if(f.exists())
            {
                f.delete();
            }
            else
            {
    
    
                f.createNewFile();
            }
        } 
    
    } 
    

      看一个有关FileInputStream例子:

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream; 
    
    public class Demo5 {
        public static void main(String args[])
        {
            File f=new File("e:\\aa\\abc.txt");//将要从哪个文件中读取数据就将哪个文件建立句柄
            InputStream input=null;//创建输入流(这个输入流必须放在try括号的外面)
            try {
                input=new FileInputStream(f);//将输入流指向要读取的文件
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            byte str[]=new byte[1024];//创建字节数组,用来盛放从输入流读取的信息
            int x=0;
            int count=0;
            for(int i=0;i<str.length;i++)
            {
                try {
                    if((x=input.read())!=-1)//判断是否到文件尾,如果到文件尾就返回-1
                    {
                        str[i]=(byte)x;//因为x的值是int类型所以要进行数据转换
                        count++;//用来计算读入了多少个字节,以便下面进行操作
                    }
                    else
                    {
                        break;//如果到达文件尾就返回退出循环
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            try {
                input.close();//关闭输入流
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println(new String(str,0,count));//将字节数组转换成字符串输出
        } 
    
    } 
    

      

    关于FileOutputStream例子

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream; 
    
    public class Demo4 {
        public static void main(String args[]) throws FileNotFoundException
        {
            File f=new File("e:\\aa\\abc.txt");//向那个文件中写入数据就显得到这个文件的句柄
            OutputStream out=new FileOutputStream(f);//新建一个通向f文件的输出流
            String xinxi="Hello 你好*****";//要输出的信息
            byte b[]=xinxi.getBytes();//将要输出的信息转换成字节数组
            try {
                out.write(b);//将信息写入文件中
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                out.close();//关闭输出流
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } 
    
    } 
    

      

    关于FileReader的例子

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.Reader; 
    
    public class Demo7 {
        public static void main(String args[])
        {
            File f=new File("e://aa//abcd.txt");//从哪个文件读入数据,就获得该文件的句柄
            Reader in=null;//创建输入流
            try {
                in=new FileReader(f);//将输入流指向要从哪个文件读入数据的我文件
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            //不能输出汉字
            byte[] str=new byte[1024];//建立字节数组用来存放读入的数据
            int x=0;
            int count=0;
            for(int i=0;i<str.length;i++)
            {
                try {
                    if((x=in.read())!=-1)//判断是否到文件尾,如果到文件尾就返回-1
                    {
                        str[i]=(byte)x;
                        count++;
                    }
                    else
                    {
                        break;
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            try {
                in.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(count);
            System.out.println(new String(str,0,count));
            //可以输出汉字
    //        char[] chr=new char[1024];
    //        int x1=0;
    //        try {
    //            x1=in.read(chr);
    //        } catch (IOException e) {
    //            e.printStackTrace();
    //        }
    //        System.out.println(new String(chr,0,x1));
    //        System.out.println(x1);
    //        try {
    //            in.close();
    //        } catch (IOException e) {
    //            // TODO Auto-generated catch block
    //            e.printStackTrace();
    //        }
        } 
    
    } 
    

      

    关于FileWriter的例子

    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Writer; 
    
    public class Demo6 {
        public static void main(String args[])
        {
            File f=new File("e:\\aa\\abcd.txt");//将要向哪个文件输出信息就获得哪个文件的句柄
            String str="Hello 你好***";//要向文件输出的字符串信息
            char[] chr={'a','b','c','d'};//向文件输出的字符数组信息
            Writer out=null;//创建输出流通道
            try {
                out=new FileWriter(f);//将输出流通道指向要输出的文件
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                out.write(str);//将字符串数组的信息写到文件中
                out.write(str,2,4);//将字符串数组的一部分信息写到文件中
                out.write(chr);//将字符数组的信息写到文件中
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                out.close();//关闭输出流
            } catch (IOException e) {
                e.printStackTrace();
            }
        } 
    
    } 
    

      

    关于BufferedReader的例子

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader; 
    
    public class Demo1 {
        public static void main(String args[])
        {
            BufferedReader buf=null;//创建缓冲输入流,可以接受汉字
            buf=new BufferedReader(new InputStreamReader(System.in));//将缓冲输入流通道指向控制台
            String str=null;//盛放从控制台接受到的信息
            System.out.println("请输入内容:");
            try {
                str=buf.readLine();
                buf.close();//关闭输出流
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println("输出内容:"+str);
        } 
    
    } 
    

      

    java流有很多常用的也就这几种。仔细想想其实他们有一个共点:

    获得文件句柄

    建立通道

    读\写数据

    关闭通道

  • 相关阅读:
    百度mp3地址解密码
    VB 在EXE后附加信息
    截屏函数
    Base64和StrToByte
    The Android ION memory allocator, DMABUF is mentioned as well
    DDC EDID 介绍
    Memory management for graphic processors TTM的由来
    科普 写display driver的必看 How video card works [2D的四种主要操作]
    GEM vs TTM
    DMABUF 背景介绍文章 Sharing buffers between devices
  • 原文地址:https://www.cnblogs.com/leonbond/p/2385277.html
Copyright © 2011-2022 走看看