蓝旭预习博客3:JavaIO流

目录

File

1.概述

2.构造方法

 3.成员方法

1.获取

2.判断

3.创建与删除

Java IO

1.概述

 2.四大基流

 1.InputStream

2.OutputStream 

 3.Reader

4.Writer 


File

1.概述

File对象就表示一个路径,可以是文件或文件夹的路径;这个路径可是存在的,也允许是不存在的,不存在的指只是声明,并不一定会用;

路径则分为绝对路径与相对路径,前者是一个固定的路径,从盘符开始,后者是相对于某个位置开始;

2.构造方法

1.public  File(String pathname)                将字符串表示的路径变成file对象
2.public  File(String parent,String child)   把父级路径和子级路径拼接
3.public  File(File parent,String child)       把父级路径和子级路径拼接

//父级路径:即最后一级路径前的所有,下面例子(D:\Code\javaCode\File\aa.txt)中的D:\Code\javaCode\File;

//子级路径:即当前最后一级路径,下面例子中的aa.txt;

如:

public static void main(String[] args) {
        //1.将字符串表示的路径变成file对象
        File file=new File("D:\\Code\\javaCode\\File\\aa.txt");

        //2.把父级路径和子级路径拼接
        File file1=new File("D:\\Code\\javaCode\\File","aa.txt");

        String path1="D:\\Code\\javaCode\\File";
        String path2="aa.txt";
        File file2=new File(path1,path2);

        String path3="D:\\Code\\javaCode\\File";
        File file3=new File(path3,"aa.txt");

        String path4="aa.txt";
        File file4=new File("aa.txt",path4);

        //3.把父级路径和子级路径拼接
        File file5=new File("D:\\Code\\javaCode\\File");
        String path5="aa.txt";
        File file6=new File(file3,path5);
    }

 3.成员方法

1.获取

方法描述
public String getAbsolutePath()  获取绝对路径
public String getPath() 获取路径
public String getName() 获取名称
public String getParent() 获取上层文件目录路径。若无,返回null
public long length()获取文件长度(即:字节数)。不能获取目录的长度。
 
public long lastModified()获取最后一次的修改时间,毫秒值
public String[] list()获取指定目录下的所有文件或者文件目录的字符串数组

代码演示:

    public void test2(){
        File file1 = new File("aa.txt");
        File file2 = new File("D:\\file\\bb.txt");

        System.out.println(file1.getAbsolutePath());
        System.out.println(file1.getPath());
        System.out.println(file1.getName());
        System.out.println(file1.getParent());
        System.out.println(file1.length());
        System.out.println(new Date(file1.lastModified()));

        System.out.println();

        System.out.println(file2.getAbsolutePath());
        System.out.println(file2.getPath());
        System.out.println(file2.getName());
        System.out.println(file2.getParent());
        System.out.println(file2.length());
        System.out.println(file2.lastModified());
    }

    public void test3(){
        File file = new File("D:\\javaCode\\cc");

        String[] list = file.list();
        for(String s : list){
            System.out.println(s);
        }

        System.out.println();

        File[] files = file.listFiles();
        for(File f : files){
            System.out.println(f);
        }

    }

2.判断

方法 描述
public boolean isDirectory() 判断是否是文件目录
public boolean isFile()  判断是否是文件
public boolean exists() 判断是否存在
public boolean canRead() 判断是否可读
public boolean canWrite()判断是否可写
public boolean isHidden()  判断是否隐藏

代码演示:

    public void test5(){
        File file1 = new File("aa.txt");
        file1 = new File("bb.txt");

        System.out.println(file1.isDirectory());
        System.out.println(file1.isFile());
        System.out.println(file1.exists());
        System.out.println(file1.canRead());
        System.out.println(file1.canWrite());
        System.out.println(file1.isHidden());

        System.out.println();

        File file2 = new File("D:\\cc");
        file2 = new File("D:\\dd");
        System.out.println(file2.isDirectory());
        System.out.println(file2.isFile());
        System.out.println(file2.exists());
        System.out.println(file2.canRead());
        System.out.println(file2.canWrite());
        System.out.println(file2.isHidden());

    }

3.创建与删除

方法    描述
public boolean createNewFile()    创建文件。若文件存在,则不创建,返回false
public boolean mkdir()    创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。
public boolean mkdirs()    创建文件目录。如果上层文件目录不存在,一并创建

 

方法 描述
public boolean createNewFile()  创建文件。若文件存在,则不创建,返回false
public boolean mkdir() 创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。
public boolean mkdirs()  创建文件目录。如果上层文件目录不存在,一并创建
public boolean delete()删除文件或者文件夹

代码演示:

public static void main(String[] args) throws IOException {
        //声明一个文件
        File file=new File("D:\\Code\\javaCode\\File\\aa.txt");
        //创建文件(若文件已存在,则返回false,否则返回true)
        boolean newFile = file.createNewFile();
        System.out.println(newFile);
    }
public static void main(String[] args) throws IOException {
        //声明一个单级文件夹
        File file1=new File("D:\\Code\\javaCode\\File\\bb");
        //创建单级文件夹(若文件夹已存在,则返回false,否则返回true)
        boolean mkdir = file1.mkdir();
        System.out.println(mkdir);
    }
public static void main(String[] args) throws IOException {
        //声明一个多级文件夹
        File file2=new File("D:\\Code\\javaCode\\File\\cc\\aa\\bb\\dd\\ee");
        //创建多级文件夹
        boolean mkdirs = file2.mkdirs();
        System.out.println(mkdirs);
    }

Java IO

1.概述

Java IO是即通过Java 执行输入输出操作,它能够让用户们通过input和output来访问不同的数据源和目的地;io分为java.io和java.nio,前者会造成线程的阻塞,而后者不会;

具体类别见下图:

 2.四大基流

即:

字节流字符流
输入流InputStreamReader
输出流OutputStreamWriter

 1.InputStream

InputStream 代表一个输入流,它是一个抽象类,不能被实例化。InputStream 定义了一些通用方法,如 read() 和 skip() 等,用于从输入流中读取数据, 包含FileInputStream,PipedInputStream,ByteArrayInputStream等等;下面是一个使用FileInputStream的示例:

import java.io.*;

public class FileInputStreamExample {

    public static void main(String[] args) {
        // 要读取的文件路径和名称
        String filePath = "C:/example/file.txt";
        // 创建输入流对象
        FileInputStream fis = null;

        try {
            fis = new FileInputStream(filePath);
            byte[] buffer = new byte[1024];
            int len;
            // 使用 while 循环读取文件,每次最多读取 1024 个字节
            while ((len = fis.read(buffer)) != -1) {
                // 将读取的字节转换为字符串,并输出到控制台
                String content = new String(buffer, 0, len, "UTF-8");
                System.out.println(content);
            }
        } catch (FileNotFoundException e) {
            System.out.println("File not found: " + filePath);
        } catch (IOException e) {
            System.out.println("Error reading file: " + e.getMessage());
        } finally {
            // 关闭输入流
            try {
                if (fis != null) {
                    fis.close();
                }
            } catch (IOException e) {
                System.out.println("Error closing file: " + e.getMessage());
            }
        }
    }
}

2.OutputStream 

OutputStream 代表一个输出流,它也是一个抽象类,不能被实例化。OutputStream 定义了一些通用方法,如 write() 和 flush() 等,用于向输出流中写入数据,常用的同样有:FileOutputStream,PipedOutputStream,ByteArrayOutputStream,下面是一个FileOutputStream示例:

import java.io.*;

public class FileOutputStreamExample {

    public static void main(String[] args) {
        // 要写入的文件路径和名称
        String filePath = "C:/example/output.txt";
        // 要写入文件的内容
        String content = "Hello, World!";
        // 创建输出流对象
        FileOutputStream fos = null;

        try {
            fos = new FileOutputStream(filePath);
            // 将字符串转换为字节数组,并将其写入文件
            fos.write(content.getBytes("UTF-8"));
            // 刷新输出流
            fos.flush();
            // 输出提示信息
            System.out.println("Content has been written to " + filePath);
        } catch (FileNotFoundException e) {
            System.out.println("File not found: " + filePath);
        } catch (IOException e) {
            System.out.println("Error writing file: " + e.getMessage());
        } finally {
            // 关闭输出流
            try {
                if (fos != null) {
                    fos.close();
                }
            } catch (IOException e) {
                System.out.println("Error closing file: " + e.getMessage());
            }
        }
    }
}

 3.Reader

Reader是Java中一种基本的字符流,按字符读写数据,是基于 InputStream 的转换类,用于完成字节流与字符流之间的转换;

常用的实现类包括 FileReader 和 InputStreamReader等

下面是一个使用FileReader的代码示例:

import java.io.FileReader;  // 引入 FileReader 类
import java.io.IOException; // 引入 IOException 类

public class FileReaderExample {
    public static void main(String[] args) {
        // 定义文件路径
        String filePath = "example.txt";

        try {
            // 创建 FileReader 对象
            FileReader fileReader = new FileReader(filePath);

            // 读取字符
            int character;
            while ((character = fileReader.read()) != -1) {
                // 打印字符
                System.out.print((char) character);
            }

            // 关闭 FileReader 对象
            fileReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4.Writer 

与Reader相同,Writer也是Java中一种基本的字符流,按字符读写数据,是基于OutputStream 的转换类,用于完成字节流与字符流之间的转换;

FileWriter代码示例:

import java.io.*;

public class FileWriterExample {
    public static void main(String[] args) {
        FileWriter writer = null;

        try {
            writer = new FileWriter("example.txt");
            writer.write("Hello World!");
            writer.close();
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        } finally {
            try {
                if (writer != null)
                    writer.close();
            } catch (IOException e) {
                System.out.println("Error: " + e.getMessage());
            }
        }
    }
}

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值