广告
返回顶部
首页 > 资讯 > 精选 >Java如何对文件进行基本操作
  • 280
分享到

Java如何对文件进行基本操作

2023-06-20 14:06:54 280人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关Java如何对文件进行基本操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。File文件类java.io.File是文件和目录的重要类(jdk6及以前是唯一)目录也使用File类进行表示

这篇文章给大家分享的是有关Java如何对文件进行基本操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

File文件类

  • java.io.File是文件和目录的重要类(jdk6及以前是唯一)

  • 目录也使用File类进行表示

  • File类与操作系统无关,但会受到操作系统的权限限制

  • 常用方法

  • createNewFile , delete , exists , getAbsolutePath , getName , getParent , getPath

  • isDirectory , isFile , length , listFiles , mkdir , mkdirs

  • File不涉及到具体的文件内容、只会涉及属性

public static void main(String[] args) {    // 创建目录    File directory = new File("D:/temp");    boolean directoryDoesNotExists = ! directory.exists();    if (directoryDoesNotExists) {        // mkdir是创建单级目录        // mkdirs是连续创建多级目录        directory.mkdirs();    }    // 创建文件    File file = new File("D:/temp/test.txt");    boolean fileDoesNotExsits = ! file.exists();    if (fileDoesNotExsits) {        try {            file.createNewFile();        } catch (IOException e) {            e.printStackTrace();        }    }    // 遍历directory下的所有文件消息    File[] files = directory.listFiles();    for (File file1 : files) {        System.out.println(file1.getPath());    }}

运行结果:

D:\temp\test.txt

Java NIO

Java 7提出的NIO包,提出新的文件系统类Path , Files , DirectoryStream , FileVisitor , FileSystem是对java.io.File的有益补充文件复制和移动文件相对路径递归遍历目录递归删除目录

Path类

public static void main(String[] args) {    // Path和java.io.File基本类似    Path path = FileSystems.getDefault().getPath("D:/temp", "abc.txt");    // D:/ 返回1 D:/temp 返回2    System.out.println(path.getNameCount());    // 用File的toPath()方法获取Path对象    File file = new File("D:/temp/abc.txt");    Path path2 = file.toPath();    System.out.println(path.compareTo(path2)); // 结果为0 说明两个path相等    // 获取Path方法三    Path path4 = Paths.get("D:/temp", "abc.txt");    // 判断文件是否可读    System.out.println("文件是否可以读取: " + Files.isReadable(path));}

Files类

public static void main(String[] args) {    // 移动文件    moveFile();    // 访问文件属性    fileAttributes();    // 创建目录    createDirectory();}private static void createDirectory() {    Path path = Paths.get("D:/temp/test");    try {        // 创建文件夹        if (Files.notExists(path)) {            Files.createDirectory(path);        } else {            System.out.println("文件夹创建失败");        }        Path path3 = path.resolve("a.java");        Path path4 = path.resolve("b.java");        Path path5 = path.resolve("c.txt");        Path path6 = path.resolve("d.jpg");        Files.createFile(path3);        Files.createFile(path4);        Files.createFile(path5);        Files.createFile(path6);        // 不带条件的遍历输出        DirectoryStream<Path> listDirectory = Files.newDirectoryStream(path);        for (Path path2 : listDirectory) {            System.out.println(path2.getFileName());        }        // 创建一个带有过滤器,过滤文件名以java txt结尾的文件        DirectoryStream<Path> pathsFilter = Files.newDirectoryStream(path, "*.{java,txt}");        for (Path item : pathsFilter) {            System.out.println(item.getFileName());        }    } catch (Exception e) {        e.printStackTrace();    }}@SuppressWarnings("all")private static void fileAttributes() {    Path path = Paths.get("D:/temp");    // 判断是否是目录    System.out.println(Files.isDirectory(path, LinkOption.NOFOLLOW_LINKS));    try {        // 获取文件的基础属性        BasicFileAttributes attributes = Files.readAttributes(path, BasicFileAttributes.class);        // 判断是否是目录        System.out.println(attributes.isDirectory());        // 获取文件最后修改时间        System.out.println(new Date(attributes.lastModifiedTime().toMillis()).toLocaleString());    } catch (Exception e) {        e.printStackTrace();    }}private static void moveFile() {    Path from = Paths.get("D:/temp", "text.txt");    // 将文件移动到D:/temp/test/text.txt, 如果目标文件以存在则替换    Path to = from.getParent().resolve("test/text.txt");    try {        // 文件大小bytes        System.out.println(Files.size(from));        // 调用文件移动方法,如果目标文件已存在则替换        Files.move(from, to, StandardCopyOption.REPLACE_EXISTING);    } catch (Exception e) {        e.printStackTrace();    }}

递归遍历查找指定文件

public class Demo2 {    public static void main(String[] args) {        // 查找以.jpg结尾的        String ext = "*.jpg";        Path fileTree = Paths.get("D:/temp/");        Search search = new Search(ext);        EnumSet<FileVisitOption> options = EnumSet.of(FileVisitOption.FOLLOW_LINKS);        try {            Files.walkFileTree(fileTree, options, Integer.MAX_VALUE, search);        } catch (IOException e) {            e.printStackTrace();        }    }}class Search implements FileVisitor {    private PathMatcher matcher;    public Search(String ext) {        this.matcher = FileSystems.getDefault().getPathMatcher("glob:" + ext);    }    public void judgeFile(Path file) throws IOException {        Path name = file.getFileName();        if (name != null && matcher.matches(name)) {            // 文件名匹配            System.out.println("匹配的文件名: " + name);        }    }    // 访问目录前调用    @Override    public FileVisitResult preVisitDirectory(Object dir, BasicFileAttributes attrs) throws IOException {        return FileVisitResult.CONTINUE;    }    // 访问文件时调用    @Override    public FileVisitResult visitFile(Object file, BasicFileAttributes attrs) throws IOException {        judgeFile((Path) file);        return FileVisitResult.CONTINUE;    }    // 访问文件失败后调用    @Override    public FileVisitResult visitFileFailed(Object file, IOException exc) throws IOException {        return FileVisitResult.CONTINUE;    }    // 访问一个目录后调用    @Override    public FileVisitResult postVisitDirectory(Object dir, IOException exc) throws IOException {        System.out.println("postVisit: " + (Path) dir);        return FileVisitResult.CONTINUE;    }}

运行结果:

匹配的文件名: d.jpg
postVisit: D:\temp\test
postVisit: D:\temp

Java的IO包

Java读写文件,只能以数据流的形式进行读写java.io包中节点类:直接对文件进行读写包装类:1、转换类:字节 / 字符 / 数据类型的转化类 。2、装饰类:装饰节点类。

节点类

直接操作文件类InputStream,OutStream(字节)    FileInputStream , FileOutputStream Reader , Writer(字符)    FileReader , FileWriter

转换类

从字符到字节之间的转化InputStreamReader: 文件读取时字节,转化为Java能理解的字符OutputStreamWriter: Java将字符转化为字节输入到文件中

装饰类

DataInputStream , DataOutputStream :封装数据流BufferedInputStream ,BufferOutputStream:缓存字节流BufferedReader , BufferedWriter:缓存字符流

文本文件的读写

写操作

public static void main(String[] args) {    writeFile();}public static void writeFile(){    try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:/temp/demo3.txt")))) {        bw.write("hello world");        bw.newLine();        bw.write("Java Home");        bw.newLine();    } catch (Exception e) {        e.printStackTrace();    }}

Demo3.txt文件内容

hello world
Java Home

读操作

public static void main(String[] args) {    readerFile();}private static void readerFile() {    String line = "";    try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:/temp/demo3.txt")))) {        while ((line = br.readLine()) != null) {            System.out.println(line);        }    } catch (Exception e) {        e.printStackTrace();    }}

运行结果:

hello world
Java Home

二进制文件读写java

public static void main(String[] args) {    writeFile();}private static void writeFile() {    try (DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("D:/temp/test.dat")))) {        dos.writeUTF("hello");        dos.writeUTF("hello world is test bytes");        dos.writeInt(20);        dos.writeUTF("world");    } catch (Exception e) {        e.printStackTrace();    }}

文件内容

hellohello world is test bytes  world

读操作

public static void main(String[] args) {   readFile();}private static void readFile() {    try (DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream("D:/temp/test.dat")))) {        System.out.println(in.readUTF() + in.readUTF() + in.readInt() + in.readUTF());    } catch (Exception e) {        e.printStackTrace();    }}

运行结果:

hellohello world is test bytes20world

ZIP文件的读写

  • zip文件操作类:java.util.zip包中

  • java.io.InputStream , java.io.OutputStream的子类

  • ZipInputStream , ZipOutputStream压缩文件输入 / 输出流

  • ZipEntry压缩项

多个文件压缩

// 多个文件压缩public static void main(String[] args) {    zipFile();}public static void zipFile() {    File file = new File("D:/temp");    File zipFile = new File("D:/temp.zip");    FileInputStream input = null;    try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) {        // 添加注释        zos.setComment(new String("多个个文件压缩".getBytes(),"UTF-8"));        // 压缩过程        int temp = 0;        // 判断是否为文件夹        if (file.isDirectory()) {            File[] listFile = file.listFiles();            for (int i = 0; i < listFile.length; i++) {                    // 定义文件的输出流                    input = new FileInputStream(listFile[i]);                    // 设置Entry对象                    zos.putNextEntry(new ZipEntry(file.getName() +                            File.separator + listFile[i].getName() ));                    System.out.println("正在压缩: " + listFile[i].getName());                    // 读取内容                    while ((temp = input.read()) != -1) {                        // 压缩输出                        zos.write(temp);                    }                    // 关闭输入流                    input.close();            }        }    } catch (Exception e) {        e.printStackTrace();    }}

注意:压缩的文件夹不能有子目录,否则会报FileNotFoundException: D:\temp\test (拒绝访问。),这是由于input = new FileInputStream(listFile[i]);读取的文件类型是文件夹导致的

多个文件解压缩

// 多个文件解压缩public static void main(String[] args) throws Exception{    // 待解压的zip文件,需要在zip文件上构建输入流,读取数据到Java中    File file = new File("C:\\Users\\Wong\\Desktop\\test.zip");    // 输出文件的时候要有文件夹的操作    File outFile = null;    // 实例化ZipEntry对象    ZipFile zipFile = new ZipFile(file);    // 定义解压的文件名    OutputStream out = null;    // 定义输入流,读取每个Entry    InputStream input = null;    // 每一个压缩Entry    ZipEntry entry = null;        // 定义压缩输入流,实例化ZipInputStream    try (ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file))) {        // 遍历压缩包中的文件        while ((entry = zipInput.getNextEntry()) != null) {            System.out.println("解压缩 " + entry.getName().replaceAll("/", "") + " 文件");            // 定义输出的文件路径            outFile = new File("D:/" + entry.getName());                        boolean outputDirectoryNotExsits = !outFile.getParentFile().exists();            // 当输出文件夹不存在时            if (outputDirectoryNotExsits) {                // 创建输出文件夹                outFile.getParentFile().mkdirs();            }                        boolean outFileNotExists = !outFile.exists();            // 当输出文件不存在时            if (outFileNotExists) {                if (entry.isDirectory()) {                    outFile.mkdirs();                } else {                    outFile.createNewFile();                }            }            boolean entryNotDirctory = !entry.isDirectory();            if (entryNotDirctory) {                input = zipFile.getInputStream(entry);                out = new FileOutputStream(outFile);                int temp = 0;                while ((temp = input.read()) != -1) {                    out.write(temp);                }                input.close();                out.close();                System.out.println("解压缩成功");            }        }    } catch (Exception e) {        e.printStackTrace();    }}

感谢各位的阅读!关于“Java如何对文件进行基本操作”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Java如何对文件进行基本操作

本文链接: https://www.lsjlt.com/news/297595.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java如何对文件进行基本操作
    这篇文章给大家分享的是有关Java如何对文件进行基本操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。File文件类java.io.File是文件和目录的重要类(JDK6及以前是唯一)目录也使用File类进行表示...
    99+
    2023-06-20
  • Java对文件进行基本操作案例讲解
    File文件类 java.io.File是文件和目录的重要类(JDK6及以前是唯一) 目录也使用File类进行表示 File类与操作系统无关,但会受到操作系...
    99+
    2022-11-12
  • springboot对本地文件进行操作
    文章目录 方案一:使用ResourceUtils方案二:使用commons-io方案三:springboot获得本地磁盘文件路径方案四:通过ResourceLoader使用文件流的方式来读取J...
    99+
    2023-09-23
    spring boot java
  • Python中对基本文件操作
    1.文件的作用 保存数据放在磁盘中 2.打开文件 f=open(‘文件’,‘w’)或者f=open(‘文件’,‘r’) 3.文件操作 3.1 写数据(write) 如果文件不存在那么创建,如果存在那...
    99+
    2023-08-31
    python 数学建模 开发语言
  • Java文件基本操作总结
    File文件类 java.io.File是文件和目录的重要类(JDK6及以前是唯一) 目录也使用File类进行表示 File类与操作系统无关,但会受到操作系...
    99+
    2022-11-12
  • C#中怎么对文本文件进行添加文本操作
    本篇文章给大家分享的是有关C#中怎么对文本文件进行添加文本操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。using System;  &nbs...
    99+
    2023-06-17
  • python中如何对文件进行操作
    这篇文章主要介绍python中如何对文件进行操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.文件基本操作1.1 文件打开和关闭open(‘文件名称','打开模式')模式:r(只读,指针再...
    99+
    2023-06-15
  • Java 7中怎么对文件进行操作
    这篇文章将为大家详细讲解有关Java 7中怎么对文件进行操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。创建和删除文件下面的代码片段向你展示的是用 Files.createFile(Pat...
    99+
    2023-06-17
  • 如何在Python中对文件进行操作
    目录前言1.open()函数2.读文件3.写文件4.通过 with 来读写文件前言 在Python中,我们可以通过一些内置函数来操作电脑上的文件,并对文件进行读写,这种读写操作是很常...
    99+
    2022-11-11
  • python对文件进行读写操作
    先看原理,再动手写程序: python进行文件读写的函数是open或file file_handler = open(filename,,mode) Table mode 模式 描述 r 以读方式打开文件,可读...
    99+
    2023-01-31
    操作 文件 python
  • JavaScript如何增加本地操作API进行直接操作本地文件
    JavaScript如何增加本地操作API进行直接操作本地文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Chrome、IE和Firef...
    99+
    2022-10-19
  • 怎么在Java中利用File对文件进行操作
    本篇文章为大家展示了怎么在Java中利用File对文件进行操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.1java.io.FileFile用于表示文件系统中的一个文件或目录通过File可以:...
    99+
    2023-05-31
    java file
  • Java对xls文件进行读写操作示例代码
    前言本文主要给大家介绍的是关于Java对xls文件进行读写操作的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: win7_x64 IDEAJava读写xls文件,使用库jxl.jar读写xls文件,这里是在知道...
    99+
    2023-05-31
    java 读写xls文件
  • node.js中怎么对文件进行操作
    这篇文章将为大家详细讲解有关node.js中怎么对文件进行操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、文件操作在文件操作里,主要是有文件读写,创建...
    99+
    2022-10-19
  • Python中怎么对文件进行操作
    Python中怎么对文件进行操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。编码方式编码方式的历史大致为ASCII ->gb2312->unicode->u...
    99+
    2023-06-16
  • VBScript 中怎么对文件进行操作
    这期内容当中小编将会给大家带来有关VBScript 中怎么对文件进行操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。创建文本文件 复制代码 代码如下:Set objFSO = CreateObject(...
    99+
    2023-06-08
  • java如何实现对Hadoop进行操作
    这篇文章主要为大家展示了“java如何实现对Hadoop进行操作”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java如何实现对Hadoop进行操作”这篇文章吧。基本操作import ...
    99+
    2023-06-20
  • 使用Python怎么对文件进行操作
    使用Python怎么对文件进行操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。文件的存储方式在计算机中,文件是以 二进制的方式保存在磁盘上的文本文件和二进制文...
    99+
    2023-06-15
  • java进行文件读写操作详解
    在Java中,文件读写操作可以使用Java的输入/输出流(IO)类来实现。Java提供了多种IO类来进行文件读写操作,包括字节流和字...
    99+
    2023-09-14
    java
  • 如何进行Python文件的操作
    本篇内容主要讲解“如何进行Python文件的操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何进行Python文件的操作”吧!1. 文件的读写原理:文件的读写称为I/O操作。操作原理:.py...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作