Java IO

Posted lym152898

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java IO相关的知识,希望对你有一定的参考价值。

一、流的概念

流(Stream)的概念源自UNIX中管道的概念,管道是一条不间断的字节流,用来实现程序或进程之间的通信。一个流必有源端和目的端(可以是内存、磁盘文件等。)流的源端和目的端可以简单的看成字节的生产者和消费者。


二、流的分类

根据 流分为:

  1. :接从指定的位置(如磁盘文件或内存区域)读或写
  2. :输入流往往是以其它输入流作为它的输入源,经过过滤或处理后再以新的输入流的形式提供给用户,输出流的原理也类似。

根据 分为:

  1. :用户可以从输入流中读取信息 ,但是不能往里写信息。
  2. :用户可以往里写信息,但是不能从中读出信息。

根据 分为两类:


Java IO流的继承结构图如下:
这里写图片描述

三、常用流的详解

文件操作类:File

在讲解流之前,先讲解一下之后和流操作紧密相关的文件操作类 File
File类是一个与文件本身操作相关的类——文件的创建、删除、重命名、取得文件大小和修改日期等。


File类中常用的构造方法和操作方法

No.方法类型描述
1public File(String pathName)构造给定一个要操作文件的完整路径
2public boolean exists()普通判定给定路径是否存在
3public File getParentFile()普通找到一个指定路径的父路径
4public boolean mkdirs()普通创建指定目录
5public boolean createNewFile()普通创建文件
6public boolean delete()普通删除文件
7public boolean isDirectory()普通判断给定路径是否是文件夹
8public boolean isFile()普通判断给定路径是否是文件
9public boolean isHidden()普通判断是否隐藏
10public boolean renameTo(File dest)普通为文件重命名
11public long lastModified()普通文件的最后一次修改时间
12public long length()普通取得文件的大小
13public String getName()普通取得文件名称
14public [] File listFiles()普通将目录中的文件以File对象数组的方式返回

代码示例

import java.util.Date;
import java.text.SimpleDateFormat;
import java.io.File;
public class TestDemo{
    public static void main(String [] args)throws Exception{
        File file = new File("/home/linyimin/DaSi/java/demo.txt");
        // 如果文件存在,获取并输出文件信息
        if(file.exists()){
            getInfo(file);
        }
        // 如果不存在,先判断文件的父路径是否存在,不存在先创建目录在创建文件,否则直接创建文件
        else if(file.getParentFile().exists()){
            // 创建文件
            file.createNewFile();
            // 获取文件信息
            getInfo(file);
        }
        else{
            // 创建目录
            file.getParentFile().mkdirs();
            // 创建文件
            file.createNewFile();
            // 获取文件信息
            getInfo(file);
        } 
        // 为文件重命名,并取得重命名后的文件信息
        File f = new File("/home/linyimin/DaSi/java/TestDemo.txt");
        file.renameTo(f);
        File newFile = new File("/home/linyimin/DaSi/java/TestDemo.txt");
        System.out.println("崇重命名之后的文件信息:");
        getInfo(newFile);
        // 删除文件
        newFile.delete();
    }

    /*
     * 获取文件的各种信息
     * @param file 目标操作文件
    **/
    public static void getInfo(File file){
        // 判断指定路径是否是目录
        System.out.println(file.getName() + (file.isDirectory()?"是一个目录":"不是一个目录"));
        // 判断是否是文件
        System.out.println(file.getName() + (file.isFile()?"是一个文件":"不是一个文件"));
        // 判断是否为隐藏文件
        System.out.println(file.getName() + (file.isHidden()?"是隐藏文件":"不是隐藏文件"));
        // 获取文件的最后修改时间
        long temp = file.lastModified();
        // 将long型数据转换称Date型数据
        Date date = new Date(temp);
        // 将Date型数据转换称时间字符串
        String str = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(date);
        System.out.println(str);
        // 输出文件大小
        System.out.println(file.getName() + ":" + file.length() + "B");
    }
}

字节流

  • 所有的 InputStream ,输入流作为数据的来源,我们可以通过输入流的read方法读取字节数据;

  • 所有的 OutputStream ,输出流接收数据,可以通过write方法写入字节数据。

对于InputStream、OutputStream类而言,本身定义的是一个抽象类(abstract class),按照抽象类的使用原则来讲,需要定义抽象类的子类,根据功能的不同,使用不同的子类完成。 以上是关于Java IO的主要内容,如果未能解决你的问题,请参考以下文章

Java基础入门

java小细节问题

Java基础(正式上课第二天)

Java面試題(实用性高)

2048等待写java版本

moon javaScript简介 第1章和 在HTML中使用javaScript第2章