IO流的总结

Java I/O主要包括如下几个层次:

  1. File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。
  2. InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。
  3. OutputStream(二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示。为此,JAVA中引入了处理字符的流。
  4. Reader(文件格式操作):抽象类,基于字符的输入操作。
  5. Writer(文件格式操作):抽象类,基于字符的输出操作。
  6. RandomAccessFile(随机文件操作):它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作。

1. File

它是独立于系统平台的,利用其构造函数创建出相应的File 对象;再调用其中的方法实现对文件的各个属性方面的操作。

构造函数:

  • File( String  path)
  • File(String path, String FileName)
  • File(File dir, String name)

用途:File类提供了一种与机器无关的方式来描述一个文件对象的属性,通过类File所提供的方法,可以得到文件或目录的描述信息,这主要包括名称、所在路经、可读性、可写性、文件的长度等,还可以生成新的目录、改变文件名、删除文件、列出一个目录中所有的文件等。

public static void main(String[] args) throws IOException {
        File f = new File("dir");   

        f.createNewFile();// 创建一个.txt这个文件   

        f.mkdir();// 创建一个名为.txt的目录   

        /*
         * 使用绝对路径
         *
         * File f=new File("D:\\dir\\src\\A.java");
         *
         * f.createNewFile();
         */   

        /*
         * 跨平台使用
         *
         * 根据不同操作系统获得对应的分隔符 File fDir=new File(File.separator);
         *
         * String strFile="dir"+File.separator+"src"+File.separator +"A.java";
         *
         * File f=new File(fDir,strFile);
         *
         * f.createNewFile();
         *
         * f.delete();//删除文件或目录
         *
         * //f.deleteOnExit();
         */   

        /*
         * 在缺省的临时文件目录下创建临时文件
         *
         * for(int i=0;i<5;i++)
         *
         * {
         *
         * File f=File.createTempFile("winTemp",".tmp");
         *
         * f.deleteOnExit();//退出时删除
         *
         *
         *
         * }
         */   

        /*
         * 列出指定目录下所有子目录及文件的名称
         */
        File fDir = new File(File.separator);
        String strFile = "dir" + File.separator + "src";
        File f = new File(fDir, strFile);
        String[] names = f.list();
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }   

        // 有过滤器的情况FilenameFilter是个接口
        File dir = new File(File.separator);   

        String filepath = "dir" + File.separator + "src";   

        /**
         * dir
         * 上级抽象路径,如果dir为null,那么程序将自动调用单个参数的File构造方法,同时将filepath路径应用到File但构造参数
         * 如果dir为//,则此路径为本文件所在磁盘根目录
         */
        File f = new File(dir, filepath);
        if (f.exists()) {
        } else {
            f.mkdirs();
        }   

        String[] names = f.list(new FilenameFilter() { // 实现了FilenameFilter接口的匿名类,实现accept方法过滤文件   

                    @Override
                    public boolean accept(File dir, String name) {
                        System.out.println(name.indexOf(".java"));
                        return name.indexOf(".java") != -1;
                    }
                });   

        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
    }

  

public static void main(String[] args) throws IOException {
        File f = new File("dir");   

        f.createNewFile();// 创建一个.txt这个文件   

        f.mkdir();// 创建一个名为.txt的目录   

        /*
         * 使用绝对路径
         *
         * File f=new File("D:\\dir\\src\\A.java");
         *
         * f.createNewFile();
         */   

        /*
         * 跨平台使用
         *
         * 根据不同操作系统获得对应的分隔符 File fDir=new File(File.separator);
         *
         * String strFile="dir"+File.separator+"src"+File.separator +"A.java";
         *
         * File f=new File(fDir,strFile);
         *
         * f.createNewFile();
         *
         * f.delete();//删除文件或目录
         *
         * //f.deleteOnExit();
         */   

        /*
         * 在缺省的临时文件目录下创建临时文件
         *
         * for(int i=0;i<5;i++)
         *
         * {
         *
         * File f=File.createTempFile("winTemp",".tmp");
         *
         * f.deleteOnExit();//退出时删除
         *
         *
         *
         * }
         */   

        /*
         * 列出指定目录下所有子目录及文件的名称
         */
        File fDir = new File(File.separator);
        String strFile = "dir" + File.separator + "src";
        File f = new File(fDir, strFile);
        String[] names = f.list();
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }   

        // 有过滤器的情况FilenameFilter是个接口
        File dir = new File(File.separator);   

        String filepath = "dir" + File.separator + "src";   

        /**
         * dir
         * 上级抽象路径,如果dir为null,那么程序将自动调用单个参数的File构造方法,同时将filepath路径应用到File但构造参数
         * 如果dir为//,则此路径为本文件所在磁盘根目录
         */
        File f = new File(dir, filepath);
        if (f.exists()) {
        } else {
            f.mkdirs();
        }   

        String[] names = f.list(new FilenameFilter() { // 实现了FilenameFilter接口的匿名类,实现accept方法过滤文件   

                    @Override
                    public boolean accept(File dir, String name) {
                        System.out.println(name.indexOf(".java"));
                        return name.indexOf(".java") != -1;
                    }
                });   

        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
    }
public static void main(String[] args) throws IOException {
        File f = new File("dir"); 

        f.createNewFile();// 创建一个.txt这个文件 

        f.mkdir();// 创建一个名为.txt的目录 

        /*
         * 使用绝对路径
         *
         * File f=new File("D:\\dir\\src\\A.java");
         *
         * f.createNewFile();
         */ 

        /*
         * 跨平台使用
         *
         * 根据不同操作系统获得对应的分隔符 File fDir=new File(File.separator);
         *
         * String strFile="dir"+File.separator+"src"+File.separator +"A.java";
         *
         * File f=new File(fDir,strFile);
         *
         * f.createNewFile();
         *
         * f.delete();//删除文件或目录
         *
         * //f.deleteOnExit();
         */ 

        /*
         * 在缺省的临时文件目录下创建临时文件
         *
         * for(int i=0;i<5;i++)
         *
         * {
         *
         * File f=File.createTempFile("winTemp",".tmp");
         *
         * f.deleteOnExit();//退出时删除
         *
         *
         *
         * }
         */ 

        /*
         * 列出指定目录下所有子目录及文件的名称
         */
        File fDir = new File(File.separator);
        String strFile = "dir" + File.separator + "src";
        File f = new File(fDir, strFile);
        String[] names = f.list();
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        } 

        // 有过滤器的情况FilenameFilter是个接口
        File dir = new File(File.separator); 

        String filepath = "dir" + File.separator + "src"; 

        /**
         * dir
         * 上级抽象路径,如果dir为null,那么程序将自动调用单个参数的File构造方法,同时将filepath路径应用到File但构造参数
         * 如果dir为//,则此路径为本文件所在磁盘根目录
         */
        File f = new File(dir, filepath);
        if (f.exists()) {
        } else {
            f.mkdirs();
        } 

        String[] names = f.list(new FilenameFilter() { // 实现了FilenameFilter接口的匿名类,实现accept方法过滤文件 

                    @Override
                    public boolean accept(File dir, String name) {
                        System.out.println(name.indexOf(".java"));
                        return name.indexOf(".java") != -1;
                    }
                }); 

        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
    }

  

RandomAccessFile(随机文件读写类):

(1)RandomAccessFile类:它直接继承于Object类而非InputStream/OutputStream类,从而可以实现读写文件中任何位置中的数据(只需要改变文件的读写位置的指针)。

(2)由于RandomAccessFile类实现了DataOutput与DataInput接口,因而利用它可以读写Java中的不同类型的基本类型数据(比如采用readLong()方法读取长整数,而利用  readInt()方法可以读出整数值等)。

import java.io.IOException;
import java.io.RandomAccessFile;   

public class RandomFileRW {   

    public static void main(String args[]) {
        StringBuffer buf = new StringBuffer();
        char ch;   

        try {
            while ((ch = (char) System.in.read()) != ‘\n‘) {
                buf.append(ch);
            }   

            // 读写方式可以为"r" or "rw"   

            /**
             * @param mode 1. r 2. rw 3. rws 4. rwd
             * "r" Open for reading only. Invoking any of the write methods of the resulting object will
             *      cause an IOException to be thrown.
             * "rw" Open for reading and writing. If the file does not already exist then an attempt will
             *      be made to create it.
             * "rws" Open for reading and writing, as with "rw", and also require that every update to the
             *      file‘s content or metadata be written synchronously to the underlying storage device.
             * "rwd"   Open for reading and writing, as with "rw", and also require that every update to the
             *      file‘s content be written synchronously to the underlying storage device.
             */
            RandomAccessFile myFileStream = new RandomAccessFile("c:\\UserInput.txt", "rw");
            myFileStream.seek(myFileStream.length());
            myFileStream.writeBytes(buf.toString());   

            // 将用户从键盘输入的内容添加到文件的尾部
            myFileStream.close();
        } catch (IOException e) {
        }
    }
}

  

时间: 2024-10-31 01:41:41

IO流的总结的相关文章

Java中的IO流

Java中的IO流是实现输入/输出的基础. 按照流的方向不同:分为输入流和输出流. 按照处理数据单位的不同:分为字节流(8位)和字符流(16位). 按照功能不同:分为节点流和处理流 所有面向字节的流类都继承于InputStream类(输入流) 或OutputStream类(输出流),这两个类是抽象类,我们可以利用它的子类来完成不同的功能. InputStream.OutputStream都是抽象类 InputStream抽象了应用程序读取数据的方式 OutputStream抽象类应用程序写出数据

Java IO流 探险

Java的IO流使用了一种装饰器设计模式,它将IO流分为底层节点流和上层处理流.本篇重点在如何访问文件与目录.如何以二进制格式和文本格式来读写数据.对象序列化机制.还有Java7的"NIO.2". 装饰设计模式:当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能.那么自定义的该类称为装饰类. 装饰类通常会通过构造方法接收被装饰的对象.并基于被装饰的对象的功能,提供更强的功能. IO的方式通常分为:BIO(同步阻塞).NIO(同步非阻塞).AIO

Java 之IO流及应用

IO流 IO流概述及FileWriter类的使用 FileReader类使用 缓冲流介绍和使用 IO流相关案例 NO.one IO流概述及FileWriter类使用 1.1 IO流概述及分类 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流 1.2 FileWriter类使用 A:打开帮助文档 B:点击显示,找到索引,看到输入框 C:你要学习什么内容,你就在框框里面输入什么内容 举例:Random D:看包

IO流和File

读键盘数据.显示数据6-1)io流的分类 按方向:输入流(读取数据) 输出流(写入数据) 按数据类型:字节流(基本数据类型)输出输入 字符流(字节流的包装 对字节流进行处理)输出输入四个核心类: InputStream 字节输入流 OutStream 字节输出流 Reader 字符输入流 Writer 字符输出流6-2) 文件类 File d:/lxj/xx.txt 绝对路径 构造方法: File(String dir,String fileName) File(String path)//pa

Java笔记(19):IO流(01)

1.try...catch的方式处理异常1 1 package cn.itcast_02; 2 3 /* 4 * 异常:程序出现了不正常的情况. 5 * 6 * 程序的异常:Throwable 7 * 严重问题:Error 我们不处理.这种问题一般都是很严重的,比如说内存溢出. 8 * 问题:Exception 9 * 编译期问题:不是RuntimeException的异常 必须进行处理的,因为你不处理,编译就不能通过. 10 * 运行期问题:RuntimeException 这种问题我们也不处

java基础8(io流3)

1.LineNumberReader: public int getLineNumber():获取行号 public void setLineNumber(int lineNumber):设置起始行号 String readLine():读取一行 2.操作基本数据类型的流 DataInputStream:读数据 DataOutputStream:写数据 作用:可以操作基本类型的流对象,其读写顺序必须一致,否则数据有问题. public static void main(String[] args

java IO流

* IO流用来处理设备之间的数据传输 * Java对数据的操作是通过流的方式 * Java用于操作流的类都在IO包中 * 流按流向分为两种:输入流,输出流. * 流按操作类型分为两种: * 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的 * 字符流 : 字符流只能操作纯字符数据,比较方便. * IO流常用父类 * 字节流的抽象父类: * InputStream * OutputStream * 字符流的抽象父类: * Reader * Writer * IO程序

Java:IO流与文件基础

Java:IO流与文件基础 说明: 本文所有内容包含图片均为MrSaber自己编写,转载请练习我哦. 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象称作 输入流,可以向其中写入一个字节序列的对象称作 输出流. ? 这些字节序列的来源可以是:文件.网络连接.内存块等. ? 抽象类InputStream和OutputStream是构成输入/输出(I/O)的基础. ? 因为面向字节的流

5. IO流:★★★★★

IO流:★★★★★,用于处理设备上数据. 流:可以理解数据的流动,就是一个数据流.IO流最终要以对象来体现,对象都存在IO包中. 流也进行分类: 1:输入流(读)和输出流(写). 2:因为处理的数据不同,分为字节流和字符流. 字节流:处理字节数据的流对象.设备上的数据无论是图片或者dvd,文字,它们都以二进制存储的.二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节.意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据. 那么为什么要有字符流呢?因

理解IO流:InputStream和OutputStream,FileInputStream和FileOutputStream,Reader和Writer,FileReader和FileWriter,BufferedInputStream 和 BufferedOutputStream, BufferedReader 和 BufferedWriter,转换流

/* * 1.理解 "流" ? * 动态性.连续性.方向性. * * 2.在java语言中,将数据的输入/输出称之为 IO流. IO流的分类: * 1) 从方向分: 输入流 , 输出流. (参照计算机的内存) * 将数据送到内存中去称之为输入流.反之,称之为输出流. * * 2) 从处理单位来分: 字节流(8位二进制数据), 字符流(16位二进制数据). * * 3) 从是否有数据源来分: 节点流(有数据源), 处理流(必须套在节点流上). * * 3.在Java语言中,所有流类均来自