Java学习:IO操作

Java IO(输入/输出)是Java中用于处理数据流的一组类和接口。它提供了一种方式来读取和写入数据,无论是来自文件、网络连接还是其他数据源。在Java中,IO操作主要通过java.io包中的类来实现。本文将详细介绍Java IO的基本概念、常用类及其用法。

一、基本概念

  1. 字节流:以字节为单位进行数据传输,主要用于处理二进制数据,如图片、音频等。常用的字节流类有InputStreamOutputStream

  2. 字符流:以字符为单位进行数据传输,主要用于处理文本数据。常用的字符流类有ReaderWriter

  3. 缓冲区:为了提高读写效率,可以使用缓冲区(Buffer)来暂存数据。缓冲区可以减少实际的磁盘或网络访问次数,从而提高性能。

二、方法

值类型方法签名说明
StringgetParent()返回 File 对象的父目录文件路径
StringgetName()返回 File 对象的纯文件名称
StringgetPath()返回 File 对象的文件路径
StringgetAbsolutePath()返回 File 对象的绝对路径
StringgetCanonicalPath()返回 File 对象的修饰过的绝对路径
booleanexists()判断 File 对象描述的文件是否真实存在
booleanisDirectory()判断 File 对象代表的文件是否是一个目录
booleanisFile()判断 File 对象代表的文件是否是一个普通文件
booleancreateNewFile()根据 File 对象,自动创建一个空文件。成功创建后返回 true
booleandelete()根据 File 对象,删除该文件。成功删除后返回 true
voiddeleteOnExit()根据 File 对象,标注文件将被删除,删除动作会到 JVM 运行结束时才会进行
String[]list()返回 File 对象代表的目录下的所有文件名
File[]listFiles()返回 File 对象代表的目录下的所有文件,以 File 对象表示
booleanmkdir()创建 File 对象代表的目录
booleanmkdirs()创建 File 对象代表的目录,如果必要,会创建中间目录
booleanrenameTo(File dest)进行文件改名,也可以视为我们平时的剪切、粘贴操作
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限

三、常用类及其用法

1. File类

File类表示文件和目录路径名的抽象表示形式。可以用来创建、删除、重命名文件和目录,以及获取文件属性等信息。

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        File file = new File("test.txt");
        if (file.exists()) {
            System.out.println("文件存在");
        } else {
            System.out.println("文件不存在");
        }
    }
}

2. FileInputStream和FileOutputStream

FileInputStream用于从文件中读取字节数据,FileOutputStream用于向文件中写入字节数据。

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

public class FileStreamDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream("input.txt");
            fos = new FileOutputStream("output.txt");
            int data;
            while ((data = fis.read()) != -1) {
                fos.write(data);
            }
        } finally {
            if (fis != null) {
                fis.close();
            }
            if (fos != null) {
                fos.close();
            }
        }
    }
}

3. BufferedInputStream和BufferedOutputStream

BufferedInputStreamBufferedOutputStream分别用于包装FileInputStreamFileOutputStream,提供缓冲功能以提高读写效率。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class BufferedStreamDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            fis = new FileInputStream("input.txt");
            fos = new FileOutputStream("output.txt");
            bis = new BufferedInputStream(fis);
            bos = new BufferedOutputStream(fos);
            int data;
            while ((data = bis.read()) != -1) {
                bos.write(data);
            }
        } finally {
            if (bis != null) {
                bis.close();
            }
            if (bos != null) {
                bos.close();
            }
            if (fis != null) {
                fis.close();
            }
            if (fos != null) {
                fos.close();
            }
        }
    }
}

4. FileReader和FileWriter

FileReader用于从文件中读取字符数据,FileWriter用于向文件中写入字符数据。

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

public class FileReaderWriterDemo {
    public static void main(String[] args) throws IOException {
        FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader("input.txt");
            fw = new FileWriter("output.txt");
            int data;
            while ((data = fr.read()) != -1) {
                fw.write(data);
            }
        } finally {
            if (fr != null) {
                fr.close();
            }
            if (fw != null) {
                fw.close();
            }
        }
    }
}

5. BufferedReader和BufferedWriter

BufferedReaderBufferedWriter分别用于包装FileReaderFileWriter,提供缓冲功能以提高读写效率。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedReaderWriterDemo {
    public static void main(String[] args) throws IOException {
        FileReader fr = null;
        FileWriter fw = null;
        BufferedReader br = null;
        BufferedWriter bw = null;
        try {
            fr = new FileReader("input.txt");
            fw = new FileWriter("output.txt");
            br = new BufferedReader(fr);
            bw = new BufferedWriter(fw);
            String line;
            while ((line = br.readLine()) != null) {
                bw.write(line);
                bw.newLine();
            }
        } finally {
            if (br != null) {
                br.close();
            }
            if (bw != null) {
                bw.close();
            }
            if (fr != null) {
                fr.close();
            }
            if (fw != null) {
                fw.close();
            }
        }
    }
}

四、总结

本文介绍了Java IO的基本概念、常用类及其用法。在实际开发中,我们可以根据需要选择合适的类来进行文件和数据流的操作。需要注意的是,为了保证资源的正确释放,建议使用try-with-resources语句或者在finally块中关闭流。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值