蒋振飞的博客 - Java入门13:IO流   
正在加载蒋振飞的博客...
V3.0
蒋振飞的博客

Java入门13:IO流

发布时间: 2018年10月16日 发布人: 蒋振飞 热度: 359 ℃ 评论数: 0

一、File类

1.File概述

    Java中把文件或者目录(文件夹)都封装成File对象,如果需要操作硬盘上的文件,或者文件夹只要找到File这个类。

2.File类的构造函数

    ①File(String pathname) :将一个字符串路径封装成File对象。
    ②File(String parent,String child):传入一个父级路径和子级路径。
    ③File(File parent,String child):传入一个File类型的父级路径和子级路径。

package day12;
import java.io.File;


public class FileDemo {
    public static void main(String[] args) {
        // File(String pathname) :将指定的路径名转换成一个File对象
        // File f = new File("D:\\a\\b.txt");
       
        // File(String parent, String child) : 根据指定的父路径和文件路径创建File对象
        // File f2 = new File("D:\\a","b.txt");
       
        // File(File parent, String child) :根据指定的父路径对象和文件路径创建File对象
        // File parent = new File("D:\\a");
        // File f3 = new File(parent,"b.txt");
       
        File f4 = new File(new File("D:\\a"),"b.txt");
       
    }
}

3.File类创建和删除功能

    ①boolean createNewFile():指定路径不存在该文件时时创建文件,返回true,否则返回false。
    ②boolean mkdir():当指定的单级文件夹不存在时创建文件夹并返回true,否则返回false。  
    ③boolean mkdirs():当指定的多级文件夹某一级文件夹不存在时,创建多级文件夹并返回true,否则返回false。
    ④boolean delete():删除文件或者删除单级文件夹。

package day12;
 
import java.io.File;
import java.io.IOException;
 

public class FileDemo2 {
    public static void main(String[] args) throws IOException {
        File f = new File("d:\\a\\b.txt");//绝对路径
        File f2 = new File("a.txt");//相对路径
       
        // boolean createNewFile() : 当指定文件不存在时创建文件并返回true,否则返回false
        System.out.println(f2.createNewFile());
       
        // boolean mkdir()   : 当指定文件夹不存在时创建文件夹并返回true,否则返回false
        File f3 = new File("b");
        System.out.println(f3.mkdir());
       
        // boolean mkdirs() : 创建指定文件夹,当文件夹所在的目录不存在,则顺道一块创建了
        File f4 = new File("c\\d\\e");
        System.out.println(f4.mkdir());
        System.out.println(f4.mkdirs());
       
        File f5 = new File("c.txt");
        System.out.println(f5.mkdir());
       
        // boolean delete() :当指定的文件或文件夹存在时删除文件或者文件夹 并返回true,否则返回false
        System.out.println(f2.delete());
        System.out.println(f3.delete());
 
        File f6 = new File("c");
        System.out.println(f6.delete());
       
    }
}

4.File类的判断功能

    ①boolean exists():判断指定路径的文件或文件夹是否存在。
    ②boolean isAbsolute():判断当前路路径是否是绝对路径。
    ③boolean isDirectory():判断当前的目录是否存在。
    ④boolean isFile():判断当前路径是否是一个文件。
    ⑤boolean isHidden():判断当前路径是否是隐藏文件。

package day12;
import java.io.File;
import java.io.IOException;
 

public class FileDemo3 {
    public static void main(String[] args) throws IOException {
        // method();
        // method2();
        // method3();
       
        method4(); 
    }
 
    private static void method4() {
        File f = new File("d:\\a\\b.txt");
        // boolean isHidden() :判断File对象指向的路径是否有隐藏属性,如果隐藏了则返回true,否则返回false
       
        System.out.println(f.isHidden());
    }
 
    private static void method3() {
        File f = new File("a.txt");
        File f2 = new File("b");
        // boolean isDirectory() :判断File对象指向的路径是否是文件夹,如果是则返回true,否则返回false
        // boolean isFile()  : 判断File对象指向的路径是否是文件,如果是则返回true,否则返回false
       
        // System.out.println(f.isDirectory());
        // System.out.println(f2.isDirectory());
       
        System.out.println(f.isFile());
        System.out.println(f2.isFile());
    }
 
    private static void method2() {
        // File f = new File("a.txt");
        File f2 = new File("d:\\a\b.txt");
       
        // boolean isAbsolute() :判断File对象指向的路径是否是绝对路径,如果是绝对路径则返回true,否则返回false
        System.out.println(f2.isAbsolute());
    }
 
    private static void method() {
        File f = new File("a.txt");
        // f.createNewFile();
       
        // boolean exists() : 判断文件或者文件夹是否存在,如果存在则返回true,否则返回false
        System.out.println(f.exists());
    }
}

5.File类的获取功能和修改名字功能

    ①File getAbsoluteFile():获取文件的绝对路径,返回File对象。
    ②String getAbsolutePath():获取文件的绝对路径,返回路径的字符串。
    ③String getParent():获取当前路径的父级路径,以字符串形式返回该父级路径。
    ④File getParentFile():获取当前路径的父级路径,以字File对象形式返回该父级路径。
    ⑤String getName():获取文件或文件夹的名称。
    ⑥String getPath():获取File对象中封装的路径。
    ⑦long lastModified():以毫秒值返回最后修改时间。
    ⑧long length():返回文件的字节数。
    ⑨boolean renameTo(File dest): 将当前File对象所指向的路径 修改为 指定File所指向的路径。

package day12;
 
import java.io.File;
import java.io.IOException;
 

public class FileDemo4 {
    public static void main(String[] args) throws IOException  {
        // method();
        // method2();
        // method3();
       
        File f = new File("d.txt");
        File f2 = new File("e.txt");
       
        // boolean renameTo(File dest) : 将当前File对象所指向的路径 修改为 指定File所指向的路径
        // 注意:修改的文件路径不能存在,如果存在则修改失败
        System.out.println(f.renameTo(f2));
    }
 
    private static void method3() {
        File f = new File("a.txt");
        File f2 = new File("d:\\a\\b.txt");
        File f3 = new File("b");
       
        // String getName() : 获取文件和文件夹的名称
        // System.out.println(f.getName());
        // System.out.println(f2.getName());
        // System.out.println(f3.getName());
       
        // String getPath() : 返回创建File对象时给的路径
        // System.out.println(f.getPath());
        // System.out.println(f2.getPath());
        // System.out.println(f3.getPath());
       
        // long lastModified() : 以毫秒值的形式返回最后修改时间
        // System.out.println(f.lastModified());
        // 2514023311294
        // Date d = new Date(2514023311294L);
        // System.out.println(d.toLocaleString());
       
        // long length() : 返回文件的字节数
        System.out.println(f.length());
        System.out.println(f3.length());
    }
 
    private static void method2() throws IOException {
        // File f = new File("a.txt");
       
        // File f2 = new File("b","c.txt");
        // System.out.println(f2.createNewFile());
       
        File parent = new File("b");
        File f3 = new File(parent,"c.txt");
        if(!parent.exists()) {
            parent.mkdirs();
        }
        System.out.println(f3.createNewFile());
       
        // String getParent() 
        System.out.println(f3.getParent());
        // File getParentFile() 
        System.out.println(f3.getParentFile());
    }
 
    private static void method() {
        File f = new File("d:\\a\\b.txt");
        File f2 = new File("a.txt");
       
        // File getAbsoluteFile()  :以File对象的形式返回当前File对象所有指向的绝对路径
        System.out.println(f2.getAbsoluteFile());
        // String getAbsolutePath() : 返回File对象所指向的绝对路径
        System.out.println(f2.getAbsolutePath());
    }
}

6.File类的其它获取功能

    ①String[] list():以字符串数组的形式返回当前路径下所有的文件和文件夹的名称。
    ②File[] listFiles():以File对象的形式返回当前路径下所有的文件和文件夹的名称。
    ③static File[] listRoots():获取计算机中所有的盘符。
    ④File[] listFiles():以File对象的形式返回当前路径下所有的文件和文件夹的名称。
    ⑤static File[] listRoots():获取计算机中所有的盘符。

package day12;
import java.io.File;
 

public class FileDemo5 {
    public static void main(String[] args)  {
        // method();
        // method2();
       
        // static File[] listRoots() :  返回的是所有盘符
        File[] files = File.listRoots();
        for (File file : files) {
            System.out.println(file);
        }
    }
 
    private static void method2() {
        File f = new File("b");
        File f2 = new File("D:\\workspace\\myFile");
        File f3 = new File("c.txt");
       
        // File[] listFiles()
        File[] files = f3.listFiles();
        for (File file : files) {
            System.out.println(file.getName());
        }
    }
 
    private static void method() {
        File f = new File("b");
        File f2 = new File("D:\\workspace\\myFile");
        File f3 = new File("c.txt");
       
        // String[] list() : 返回当前路径下所有的文件和文件夹名称
        // 注意:只有指向文件夹的File对象才可以调用该方法
        String[] files = f3.list();
        for (int i = 0; i < files.length; i++) {
            System.out.println(files[i]);
        }
    }
}

二、字符流与字节流

1.IO流分类

    1) 字节流

        ①字节输入流   读取数据InputStream。
        ②字节输出流   写出数据OutputStream。

    2) 字符流

        ①字符输入流  读取数据Reader。
        ②字符输出流  写出数据Writer。

2.使用字符流复制文本文件

package day12;
 
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 

public class FileCopyDemo {
    public static void main(String[] args) throws IOException  {
        // 创建字符输入流对象
        FileReader fr = new FileReader("IODemo.java");
        // 创建字符输出流对象
        FileWriter fw = new FileWriter("d:\\IODemo.java");
       
        // 一次读写一个字符
       
        /*int ch;
        while((ch = fr.read()) != -1) {
            fw.write(ch);
            fw.flush();
        }*/
       
        // 一次读写一个字符数组
        int len;//用于存储读到的字符个数
        char[] chs = new char[1024];
        while((len = fr.read(chs)) != -1) {
            fw.write(chs,0,len);
            fw.flush();
        }
       
        // 释放资源
        fw.close();
        fr.close();
    }
}

3.使用字节流复制文本文件

package day12;
 
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
 

public class FileCopyDemo {
    public static void main(String[] args) throws IOException  {
        // 创建字节输入流对象
        FileInputStream fis = new FileInputStream("IODemo.java");
        // 创建字节输出流对象
        FileOutputStream fos = new FileOutputStream("d:\\a\\IODemo.java");
       
        // 一次读写一个字节
        /*int by;
        while((by = fis.read()) != -1) {
            fos.write(by);
        }*/
        // 一次读写一个字节数组
        int len;//存储读到的字节个数
        byte[] bys = new byte[1024];
        while((len = fis.read(bys)) != -1) {
            fos.write(bys,0,len);
        }

        // 释放资源
        fos.close();
        fis.close();
    }
}

4.复制图片

    ①字节流可以操作所有类型的文件,因为所有的文件在计算机中都是以字节形式存储。
    ②字符流只能用来操作纯文本类型的文件,不能操作字节类型的文件。

package com.itheima_04;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 

public class CopyImage {
    public static void main(String[] args) throws IOException  {
        // method();
       
        // 创建字节输入流对象
        FileInputStream fis = new FileInputStream("传智学院.jpg");
        // 创建字节输出流对象
        FileOutputStream fos = new FileOutputStream("d:\\传智学院.jpg");
       
        // 一次读写一个字节数组
        int len;//用于存储读到的字节个数
        byte[] bys = new byte[1024];
        while((len = fis.read(bys)) != -1) {
            fos.write(bys,0,len);
        }
       
        // 释放资源
        fos.close();
        fis.close();
    }
 
    private static void method() throws FileNotFoundException, IOException {
        // 创建字符输入流对象
        FileReader fr = new FileReader("me.jpg");
        // 创建字符输出流对象
        FileWriter fw = new FileWriter("d:\\me.jpg");
       
        // 一次读写一个字符数组
        int len;// 用于存储读到的字符个数
        char[] chs = new char[1024];
        while((len = fr.read(chs)) != -1) {
            fw.write(chs,0,len);
            fw.flush();
        }
       
        // 释放资源
        fw.close();
        fr.close();
    }
}

打赏 蒋振飞

取消

感谢您的支持,我会继续努力的!

扫码支持
一分也是爱     一块不嫌多

点击 支付宝 或 微信 打赏蒋振飞

打开支付宝扫一扫,即可进行扫码打赏哦

评论列表