Java文件操作

这篇具有很好参考价值的文章主要介绍了Java文件操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、File类概述

1.1 使用案例

二、文件内容的读写

2.1 字符流

2.1.1 读取文件

2.1.2 写入文件

2.2 字节流

2.2.1 读取文件

2.2.2 写入文件


对于Java操作文件,具体详情可以参考Java api文档 中的Java.io.File类

一、File类概述

首先先了解一下File类中常见的属性、构造方法和普通方法

属性

修饰符及类型 属性 说明
static String pathSeparator 依赖于系统的路径分隔符,String 类型的表示
static char pathSeparator 依赖于系统的路径分隔符,char 类型的表示

构造方法

签名 说明
File(File parent, String
child)
根据父目录 + 孩子文件路径,创建一个新的 File 实例
File(String pathname) 根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者
相对路径
File(String parent, String
child)
根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用
路径表示

普通方法

修饰符及返回
值类型
方法签名 说明
String getParent() 返回 File 对象的父目录文件路径
String getName() 返回 FIle 对象的纯文件名称
String getPath() 返回 File 对象的文件路径
String getAbsolutePath() 返回 File 对象的绝对路径
String getCanonicalPath() 返回 File 对象的修饰过的绝对路径
boolean exists() 判断 File 对象描述的文件是否真实存在
boolean isDirectory() 判断 File 对象代表的文件是否是一个目录
boolean isFile() 判断 File 对象代表的文件是否是一个普通文件
boolean createNewFile() 根据 File 对象,自动创建一个空文件。成功创建后返
回 true
boolean delete() 根据 File 对象,删除该文件。成功删除后返回 true
void deleteOnExit() 根据 File 对象,标注文件将被删除,删除动作会到
JVM 运行结束时才会进行
String[] list() 返回 File 对象代表的目录下的所有文件名
File[] listFiles() 返回 File 对象代表的目录下的所有文件,以 File 对象
表示
boolean mkdir() 创建 File 对象代表的目录
boolean mkdirs() 创建 File 对象代表的目录,如果必要,会创建中间目
boolean renameTo(File
dest)
进行文件改名,也可以视为我们平时的剪切、粘贴操
boolean canRead() 判断用户是否对文件有可读权限
boolean canWrite() 判断用户是否对文件有可写权限

1.1 使用案例

File的基本使用

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

public class Demo5 {
    public static void main(String[] args) throws IOException {
        File file = new File("../hello.txt");//这里不要求该文件存在
        System.out.println(file.getParentFile());
        System.out.println(file.getName());
        System.out.println(file.getAbsoluteFile());
        System.out.println(file.getCanonicalFile());
    }
}

Java文件操作,java

普通文件的创建、删除

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

public class Demo6 {
    public static void main(String[] args) throws IOException {
        File file = new File("./test.txt");
        System.out.println(file.exists());
        System.out.println(file.isFile());
        // 创建文件
        file.createNewFile();
        System.out.println(file.exists());
        System.out.println(file.isFile());
        System.out.println(file.getAbsoluteFile());
    }
}

 Java文件操作,java

当前的目录中是没有这个test.txt文件的,然后运行程序

Java文件操作,javaJava文件操作,java

从这里可以看出创建已经成功了,接下来是删除操作。

import java.io.File;

public class Demo7 {
    public static void main(String[] args) {
        File file = new File("./test.txt");
        file.delete();
    }
}

当这个代码执行的时候,文件就会被删除了。

二、文件内容的读写

2.1 字符流

2.1.1 读取文件

构造方法

签名 说明
FileReader(File file) 利用 File 构造文件输入流
FileReader(String name) 利用文件路径构造文件输入流

文件读取

首先先准备好一个含有内容的文件 

Java文件操作,java

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class Demo9 {
    public static void main(String[] args) throws IOException {
        //这里用try()的写法就不用去关闭字符流了,这个会自动关闭
        try(Reader reader = new FileReader("./test.txt")) {
            // 因为文件不能一下就全部读完,所以采取循环读取的方式
            while (true) {
                // 用来存储读取到的字符
                char[] buf = new char[1024];
                // 将文件中的内容写入字符数组中
                int n = reader.read(buf);
                if (n == -1) {
                    // 读取结束
                    break;
                }
                for (int i = 0; i < n; i++) {
                    System.out.print(buf[i]);
                }
            }
        }
    }
}

Java文件操作,java 

2.1.2 写入文件

修饰
符及
返回
值类
方法签名 说明
void write(int b) 写入数据
void write(byte[] b) 将 b 这个字符数组中的数据全部写入 os 中
int write(byte[] b,  int off, int len) 将 b 这个字符数组中从 off 开始的数据写入 os 中,一共写 len 个
void close() 关闭字节流
void flush() 重要:我们知道 I/O 的速度是很慢的,所以,大多的 OutputStream 为
了减少设备操作的次数,在写数据的时候都会将数据先暂时写入内存的
一个指定区域里,直到该区域满了或者其他指定条件时才真正将数据写
入设备中,这个区域一般称为缓冲区。但造成一个结果,就是我们写的
数据,很可能会遗留一部分在缓冲区中。需要在最后或者合适的位置,
调用 flush(刷新)操作,将数据刷到设备中。
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class Demo10 {
    public static void main(String[] args) throws IOException {
        try (Writer fileWriter = new FileWriter("./test.txt",true)) {
            fileWriter.write("hello world!");
        }
    }
}

运行代码就会看到,结果已经写入了文件中了

Java文件操作,java

2.2 字节流

2.2.1 读取文件

构造方法

签名 说明
FileInputStream(File file) 利用 File 构造文件输入流
FileInputStream(String name) 利用文件路径构造文件输入流

开始读取文件

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class Demo11 {
    public static void main(String[] args) throws IOException {
        try (InputStream in = new FileInputStream("./test.txt")) {
            while (true) {
                byte[] buf = new byte[1024];// 由于这里是字节流读入,所以只能用字节数组接收
                int n = in.read(buf);
                if (n == -1) {
                    break;
                }
                for (int i = 0; i < n; i++) {
                    System.out.printf("%x",buf[i]);// 由于是字节,这里用16进制打印
                }
            }
        }
    }
}

由于有时候需要的是文件本身的内容,而不是字节内容,这里通常使用 String 来解决。

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class Demo11 {
    public static void main(String[] args) throws IOException {
        try (InputStream in = new FileInputStream("./test.txt")) {
            while (true) {
                byte[] buf = new byte[1024];// 由于这里是字节流读入,所以只能用字节数组接收
                int n = in.read(buf);
                if (n == -1) {
                    break;
                }
                // 利用String 字节转字符
                String s = new String(buf,0,n);
                System.out.print(s);
            }
        }
    }
}

利用Scanner 进行字符读取

上述例子中,我们看到了对字符类型直接使用 InputStream 进行读取是非常麻烦且困难的,所以,我们使用一种我们之前比较熟悉的类来完成该工作,就是 Scanner 类。但是Scanner类只能用于字节流的文本内容读取,如果内容是二进制文件则不能用Scanner。

构造方法 说明
Scanner(InputStream is, String charset) 使用 charset 字符集进行 is 的扫描读取
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;

public class Demo12 {
    public static void main(String[] args) throws IOException {
        try (InputStream in = new FileInputStream("test.txt")) {
            Scanner sc = new Scanner(in);
            // 由于Scanner遇到换行就会停止读取,为了读取全部文本内容就要用到hashNext
            while (sc.hasNextLine()) {
                String s = sc.nextLine();
                System.out.println(s);
            }
        }
    }
}

注意:不论是字节流还是字符流都能用Scanner来接收 ,但是都只限于文本内容

2.2.2 写入文件

这里的写入具体方法参考 2.1.2中的方法,因为写入的方法都是一样的,只是写入的是字节还是字符的区别。

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Demo14 {
    public static void main(String[] args) throws IOException {
        try (OutputStream os = new FileOutputStream("./test.txt",true)) {
            os.write("hello".getBytes());// 由于是字节输出所以要转换成字节
        }
    }
}

这里的操作并不需要全部记住,只需要了解如何使用即可。用的使用查询api文档文章来源地址https://www.toymoban.com/news/detail-688868.html

到了这里,关于Java文件操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java文件操作2

    1.FileReader 首先来介绍一下FileReader类。FileReader类可用于读取字符流和文本文件。它提供了多个构造函数,其中最常用的是接受一个文件名或File对象作为参数的构造函数。在使用FileReader类时,需要注意一些异常情况,如文件不存在、文件无法读取等。为此,我们可以使用try-

    2024年02月07日
    浏览(37)
  • Java中操作文件(一)

    目录 一、引入 二、File概述 2.1、属性  2.2、构造方法  2.3、方法  2.4、代码示例 示例1 示例2  示例3  示例4 示例5 示例6 示例7  示例8 文件是操作系统中的重要概念,Java作为一个跨平台语言,可以针对不同的操作系统处理文件。比如说windows与linux组织文件的方式是不同的,

    2024年02月12日
    浏览(43)
  • 【Java系列】文件操作详解

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得,欢迎大家在评论区交流讨论💌 文件是在硬盘上存储数据的一种方式。即数据是在硬盘上

    2024年02月03日
    浏览(28)
  • Java中的文件操作

    Java中通过 java.io.File 类来对⼀个⽂件(包括⽬录)进⾏抽象的描述。注意,有File对象, 并不代表真实存在该⽂件。  1.1 属性 在Java中提供了这两个常量来获取对应的系统的文件路径分隔符 pathSeparatorChar是一个字符常量,表示系统相关的路径分隔符。它的值由fs.getPathSeparato

    2024年01月21日
    浏览(93)
  • 【Java 基础篇】Java Zip压缩:简化文件和文件夹的压缩操作

    在Java开发中,经常会遇到需要对文件和文件夹进行压缩和解压缩的需求。Java提供了Zip压缩库,使我们能够轻松地进行文件和文件夹的压缩操作。本文将详细介绍Java中的Zip压缩功能,并提供示例代码来演示其用法。 Zip压缩是一种常见的文件压缩格式,它将多个文件和文件夹打

    2024年02月15日
    浏览(76)
  • 【Java EE 初阶】文件操作

    目录 1.什么是文件? 1.在cmd中查看指定目录的树形结构语法 2.文件路径 从当前目录开始找到目标程序(一个点) 返回到上一级目录,再找目标程序(两个点) 2.Java中文件操作 1.File概述 1.属性 2. 构造方法 3.常用方法  代码展示: 4.常用方法2 3. 文件内容的读写---数据流 1.I

    2024年02月06日
    浏览(43)
  • 【JavaEE初阶】 认识文件与Java中操作文件

    我们先来认识狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般。 文件除了有数据内容之外,

    2024年02月07日
    浏览(41)
  • Java之文件操作与IO

    目录 一.认识文件 1.1文件是什么?  1.2文件的组织  1.3文件路径 1.4文件的分类 二.文件操作 2.1File概述  三.文件内容操作--IO 3.1JavaIO的认识  3.2Reader和Writer ⭐Reader类  ⭐Writer类 3.2FileInputStream和FileOutputStream ⭐FileInputStream类 ⭐FileOutputStream类 四.总结 🎁个人主页:tq02的博客_C

    2024年02月10日
    浏览(39)
  • Java API 操作HDFS文件

    使用JavaAPI操作hdfs 文件的常用操作代码 1.创建目录 2.创建文件 3.重命名 4.上传本地文件到hdfs 5.查看某个目录下的所有文件 6.查看文件块信息 7.文件读写 8.文件上传 9.文件下载 10.使用字节流读取数据 11.删除文件 12.删除文件夹 13.自定义数据输入流

    2024年02月11日
    浏览(37)
  • Java文件操作与流处理

    在计算机中,文件是用于存储数据的基本单位。它可以包含文本、图像、音频、视频或其他类型的数据。文件可以用于保存程序代码、用户数据、操作系统配置等内容。每个文件都有一个唯一的名称,通过这个名称可以在计算机系统中找到和访问文件。 文件除了有数据内容之

    2024年02月15日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包