zoukankan      html  css  js  c++  java
  • Java IO流

    对于IO流,反正一直都是迷迷糊糊的一个状态,懂的不是很透彻,今天研究一下,顺便在这里记个笔记。

    1、数据向内存流动是输入流,反之,是输出流。程序运行在内存中,文件保存在磁盘中,在程序中读取文件,是从磁盘到内存,属于输入流。如果数据要从程序输出到文件中,便是内存写入到磁盘,是输出流。所以说输入流是read,输出流是write。

    2、字节流:以字节(byte)为单位进行读取,可用于读取任意类型文件及二进制文件。

         字符流:用于读取文本文件,不能操作二进制文件。

         那文本文件和二进制文件到底是怎么回事啊?是这样,计算机文件分为二进制文件和文本文件两种。一个最简单的区分方法:能用记事本直接打开的文件是文本文件,反之就是二进制文件。图像、音频、视频文件就都是二进制文件,将一张图片用记事本打开会看到一堆乱码,如果在这堆乱码里面随便加点东西,那这张图片就打不开了,这就是最糙的加密方式。另外,文件是什么类型的看文件后缀名没有意义,那个后缀名其实可以随意设置的,比方说有些病毒其实是可执行文件但它的后缀就是txt。

      字节流 字符流
    输入 InputStream Reader
    输出 OutputStream Writer

    IO流类图结构

    3、要记得在finally里面关闭IO流

    下面放两个例子,在IO编程的过程中一定要多查帮助文档。

    1、读取文件,使用FileInputStream读文件(磁盘->内存)。

    import java.io.*;
    
    public class Test {
        public static void main(String[] args) {
            //文件对象f->E://test.txt
            File f = new File("E://test.txt");
            FileInputStream fis=null;
            try {
                //文件没有读写能力 所以需要FileInputStream
                fis = new FileInputStream(f);
                byte []b = new byte[1024];//该字节数组相当于缓存 一次读取这么多
                while(fis.read(b)!=-1)//如果文件读取完毕,read()会返回-1
                {
                    String s = new String(b);//将字节转成string
                    System.out.print(s);
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                //关闭文件流(必须放在finally)
                try {
                    fis.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    2、将键盘输入的内容保存到文件(内存->磁盘),用FileOutputStream。

    import java.io.*;
    public class Test1 {
        
    public static void main(String[] args) {
            File f = new File("E://test.txt");
            InputStreamReader isr = null;
            BufferedReader br = null;
    
            FileOutputStream fos=null;
            try {
                isr = new InputStreamReader(System.in);
                br = new BufferedReader(isr);
                fos = new FileOutputStream(f);
                String s;
                s = br.readLine();
                fos.write(s.getBytes());
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                try {
                    isr.close();
                    br.close();
                    fos.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
            
        }
    
    }
  • 相关阅读:
    vim配置----YouCompleteMe配置
    Linux之configure make make install
    zookeeper原理与实践(一)----zookeeper的基本功能
    RPC原理与实践(二)----Thrift分层模型
    RPC原理与实践(一)----RPC原理与实现(Thrift版)
    mysql由浅入深探究(四)----mysql事务详解
    mysql由浅入深探究(三)----mysql增删改查
    mysql由浅入深探究(二)----mysql用户操作
    Django
    7.1
  • 原文地址:https://www.cnblogs.com/littleLittleTiger/p/10334533.html
Copyright © 2011-2022 走看看