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流有很多常用的也就这几种。仔细想想其实他们有一个共点:

    获得文件句柄

    建立通道

    读\写数据

    关闭通道

  • 相关阅读:
    [linux] shell脚本编程-ubuntu创建vsftpd服务
    [linux] C语言Linux系统编程-做成守护进程
    [编程] C语言Linux系统编程-等待终止的子进程(僵死进程)
    [Linux]C语言Linux系统编程创建进程
    [linux] C语言Linux系统编程进程基本概念
    [编程] C语言枚举类型(Enum)
    [编程] C语言结构体指针作为函数参数
    [编程] C语言的二级指针
    [编程] C语言的结构体
    [编程] C语言循环结构计算π的值
  • 原文地址:https://www.cnblogs.com/leonbond/p/2385277.html
Copyright © 2011-2022 走看看