五、输入输出流

本文围绕Java文件与IO流展开,介绍了文件和文件流的概念,阐述了创建文件对象的构造器和方法,以及获取文件信息、操作目录和删除文件的方法。重点讲解了Java IO流原理、流的分类,详细介绍了各类流的子类及使用,还涉及序列化、反序列化、标准输入输出流、转换流、打印流和Properties类等内容。

1.什么是文件

文件就是我们保存数据的地方,比如我们经常使用的 word文档,txt文件

2.什么是文件流

文件在程序中是以流的方式来操作的

输入流:数据在数据源文件到程序的路径

输出流:数据从程序到数据源文件到路径

创建文件对象构造器和方法

new File(String pathname)//根据路径构建一个File对象

new File(File parent,String child)//根据父目录文件内+子路径构建

new File(String parent,String child)//根据父目录+子路径构建

 例题

import org.junit.Test;

import java.io.File;
import java.io.IOException;

/**
 * 
 * 创建文件的三种方式
 *
 */
public class FileCreat01 {
    public static void main(String[] args) {
    }
    @Test
    //方式一
    public void creat01(){
        String filePath="e:\\news1.txt";
        File file = new File(filePath);

        try {
            file.createNewFile();
            System.out.println("创建成功");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
    @Test
    public void create02(){
        File parentfile = new File("e:\\");
        String fileName ="news2.txt";
        //这里的file对象,在java程序中,只是一个java对象而已
        //只有执行了createfile方法才会整整的从磁盘创建该文件
        File file = new File(parentfile, fileName);
        try {
            file.createNewFile();
            System.out.println("创建成功");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    @Test
    //方式3
    public void create03(){
        String parentPath= "e:\\";
        String fileName ="news3.txt";
        File file = new File(parentPath, fileName);

        try {
            file.createNewFile();
            System.out.println("创建成功");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
}

获取文件到相关信息的各种方法

import org.junit.Test;

import java.io.File;

/**
 * 
 * 获取文件信息
 */
public class FileInformation02 {
    public static void main(String[] args) {

    }
    @Test
    //获取文件信息
    public void info(){
        //先创建文件对象
        File file = new File("e:\\news1.txt");
        //调用相应的方法,得到对应信息
        System.out.println("文件名字 = "+file.getName());

        System.out.println("文件绝对路径:"+file.getAbsolutePath());
        System.out.println("文件父级目录:"+file.getParent());
        System.out.println("文件字节大小:"+file.length());
        System.out.println("文件是否存在:"+file.exists());
        System.out.println("是不是一个文件:"+file.isFile());
        System.out.println("是不是一个目录:"+file.isDirectory());


    }
}

目录的操作和文件删除

mkdir创建以及目录,mkdirs创建多级目录,delete删除空目录或文件

import org.junit.Test;

import java.io.File;

/**
 * 
 * 判断文件存在不存在 存在便删除
 */
public class Directory03 {
    public static void main(String[] args) {
    }

    //判断d:\\news1.txt是否存在 如果存在就删除
    @Test
    public void m1(){//删除news1.txt
        String filepath="e:\\news1.txt";
        File file = new File(filepath);
        if(file.exists()){
            if (file.delete()){
                System.out.println(filepath+"删除成功");
            }else {
                System.out.println("删除失败");
            }
        }else {
            System.out.println("文件不存在");
        }
    }
    //判断D:\\demo02是否存在,存在就删除
    //这里我们需要体会到,在java编程中,目录也被当做文件
    @Test
    public void m2(){
        String filepath="d:\\demo02";
        File file = new File(filepath);
        if(file.exists()){
            if (file.delete()){
                System.out.println(filepath+"删除成功");
            }else {
                System.out.println("删除失败");
            }
        }else {
            System.out.println("目录不存在");
        }
    }
    判断: D:\\demo\\a\\b\\c是否存在,存在提示已存在,不存在创建
    public void m3(){
        String directorPath="d:\\demo\\a\\b\\c";
        File file = new File(directorPath);
        if(file.exists()) {
            System.out.println("目录存在");
        }else {
            if(file.mkdirs()){
                System.out.println("directorPath"+ "创建成功");
            }else {
                System.out.println("directorPath" +"创建失败");
            }
        }
    }
}

Java IO流原理

1.I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输,如读写文件等

2.Java程序中,对于数据的输入、输出操作以“流”的方式进行

3.java.io包下提供了各种“流”类和接口用以获取不同种类的数据,并通过方法输入或输出数据

4.输入input:读取外部数据(磁盘,光盘等存储设备的数据到程序(内存)中)

5.输出output:将程序(内存)数据输出到磁盘,光盘等存储设备中

流的分类

按操作数据单位不同分为 :字节流 (8比特)二进制文件 和  字符流(按字符)文本文件

按数据流的流向不同分为:输入流  和   输出流

按数据流的不同分为:节点流   和  处理流/包装流

抽象基类 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer

由上面四种抽象基类派生出40多个类,子类名称都是以其父类名作为子类名后缀

InputStream抽象类是所有类字节输入流的超类

InputStream常用的子类(字节流)

1.FileInputStream:文件输入流

2.BufferedInputStream :缓冲字节输入流

3.ObjectInputStream: 对象字节输入流

FileInputStream

package Inputstream_04;
import org.junit.Test;
import java.io.FileInputStream;
import java.io.IOException;

/**
 * 
 * 演示读取文件
 */
public class FileInputStream_01 {
    public static void main(String[] args) {
    }

@Test
public void readFile01(){
    String filePath ="e:\\hello.txt";
    //一个一个读太慢
    int readDate =0;
    FileInputStream  fileInputStream=null;
        try {
            //创建FileInputStream对象 ,用于读取文件
            fileI
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值