Java文件操作实例详解

Java文件操作实例详解

一、文件操作的概述

文件操作是指程序通过对文件或文件夹的读、写、删除等操作实现对数据的存储,读取与处理。Java提供了丰富的IO库,可以实现大量的文件操作。本文将介绍Java文件操作的基本流程和常见用法。

二、文件操作的基本流程

Java对文件操作的流程主要包括以下步骤:

  1. 判断文件或文件夹是否存在;
  2. 创建文件或文件夹;
  3. 读取或写入文件;
  4. 删除文件或文件夹。

下面将依次介绍这些步骤。

三、文件或文件夹的判断与创建

  1. 判断文件或文件夹是否存在

Java提供了File类的isDirectory()和isFile()方法,可以用来判断一个路径是否是文件夹或文件。具体用法如下:

File file = new File("路径");
if(file.isDirectory()){
    System.out.println(file.getName() + "是文件夹");
}else if(file.isFile()){
    System.out.println(file.getName() + "是文件");
}else{
    System.out.println("路径不存在");
}
  1. 创建文件或文件夹

Java提供了File类的createNewFile()和mkdir()方法,可以用来创建文件或文件夹。具体用法如下:

File file = new File("test.txt");
try {
    file.createNewFile();
} catch (IOException e) {
    e.printStackTrace();
}
File folder = new File("testFolder");
folder.mkdir();

四、文件的读写与删除

  1. 读取文件

Java提供了File类、FileInputStream类和BufferedInputStream类,可以用来读取文件数据。其中FileInputStream用来读取文件数据,BufferedInputStream用来提高读取效率。
具体用法如下:

File file = new File("test.txt");
BufferedInputStream bis = null;
try {
    bis = new BufferedInputStream(new FileInputStream(file));
    byte[] buffer = new byte[1024];
    int len = 0;
    while((len = bis.read(buffer)) != -1){
        System.out.println(new String(buffer,0,len));
    }
} catch (IOException e) {
    e.printStackTrace();
} finally{
    if(bis != null){
        try {
            bis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  1. 写入文件

Java提供了File类、FileOutputStream类和BufferedOutputStream类,可以用来写入文件数据。其中FileOutputStream用来写入文件数据,BufferedOutputStream用来提高写入效率。具体用法如下:

File file = new File("test.txt");
BufferedOutputStream bos = null;
try {
    bos = new BufferedOutputStream(new FileOutputStream(file));
    bos.write("Java文件操作实例".getBytes());
} catch (IOException e) {
    e.printStackTrace();
} finally{
    if(bos != null){
        try {
            bos.flush();
            bos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  1. 删除文件或文件夹

Java提供了File类的delete()方法,可以用来删除文件或文件夹。具体用法如下:

File file = new File("test.txt");
file.delete();

File folder = new File("testFolder");
folder.delete();

五、示例

下面给出两个文件操作的示例:

  1. 将一个文件复制到另一个文件夹:
File source = new File("source.txt");
File targetFolder = new File("targetFolder");
if(!targetFolder.exists()){
    targetFolder.mkdir();
}
File target = new File(targetFolder.getAbsolutePath() + File.separator + source.getName());
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
    bis = new BufferedInputStream(new FileInputStream(source));
    bos = new BufferedOutputStream(new FileOutputStream(target));
    byte[] buffer = new byte[1024];
    int len = 0;
    while((len = bis.read(buffer)) != -1){
        bos.write(buffer,0,len);
    }
} catch (IOException e) {
    e.printStackTrace();
} finally{
    if(bis != null){
        try {
            bis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    if(bos != null){
        try {
            bos.flush();
            bos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  1. 将一个文件夹及其子文件夹的所有文件复制到另一个文件夹:
File sourceFolder = new File("sourceFolder");
File targetFolder = new File("targetFolder");
if(!targetFolder.exists()){
    targetFolder.mkdir();
}
copyFolder(sourceFolder,targetFolder);

public static void copyFolder(File sourceFolder,File targetFolder){
    if(sourceFolder.isDirectory()){
        File[] files = sourceFolder.listFiles();
        for(File file : files){
            if(file.isDirectory()){
                File newFolder = new File(targetFolder.getAbsolutePath() + File.separator + file.getName());
                newFolder.mkdir();
                copyFolder(file,newFolder);
            }else{
                File newFile = new File(targetFolder.getAbsolutePath() + File.separator + file.getName());
                BufferedInputStream bis = null;
                BufferedOutputStream bos = null;
                try {
                    bis = new BufferedInputStream(new FileInputStream(file));
                    bos = new BufferedOutputStream(new FileOutputStream(newFile));
                    byte[] buffer = new byte[1024];
                    int len = 0;
                    while((len = bis.read(buffer)) != -1){
                        bos.write(buffer,0,len);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                } finally{
                    if(bis != null){
                        try {
                            bis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    if(bos != null){
                        try {
                            bos.flush();
                            bos.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    }
}

以上是Java文件操作的详细攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java文件操作实例详解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 基于SSM+Shiro+Bootstrap实现用户权限管理系统

    下面我将结合示例详细讲解如何使用SSM+Shiro+Bootstrap实现用户权限管理系统的完整攻略。 SSM框架搭建 准备工具和环境: JDK 1.8+ Maven IntelliJ IDEA 或Eclipse Tomcat 创建Maven项目,并添加以下依赖: Spring SpringMVC MyBatis 配置web.xml文件,添加SpringMV…

    Java 2023年6月15日
    00
  • 分析SpringBoot的启动原理

    下面我会详细地讲解分析Spring Boot启动原理的攻略,内容如下。 什么是Spring Boot Spring Boot 是一个基于Spring Framework构建的用于快速构建Web应用程序和微服务的开源框架。 Spring Boot的主要目的是简化Spring的配置和开发过程。Spring Boot集成了Spring框架,内嵌了Tomcat、Je…

    Java 2023年5月15日
    00
  • 使用AJAX完成用户名是否存在异步校验

    使用AJAX可以在不刷新页面的情况下向服务器发送请求,并获取服务器端响应,从而达到异步更新页面内容和验证用户输入的目的。下面是使用AJAX完成用户名是否存在异步校验的攻略: 1.前端页面 在前端页面中,需要先引入jQuery库,然后编写一个函数进行异步校验,具体代码如下: <!DOCTYPE html> <html> <head…

    Java 2023年6月15日
    00
  • mybatis简介与配置_动力节点Java学院整理

    下面我将介绍关于MyBatis的简介与配置,并附上两个示例供参考。 Mybatis简介 MyBatis是一个开源的Java持久化框架,它通过XML或注解实现了对SQL的映射,将程序中的Java对象自动映射到数据库中的对应表格。MyBatis可以很好地解决Java程序中数据的存取问题,同时它也提供了很好的扩展性。 MyBatis最初是iBATIS项目,2006…

    Java 2023年5月20日
    00
  • SpringBoot整合Apache Ignite的实现

    Spring Boot 整合 Apache Ignite 的过程可以分为以下几个步骤: 引入依赖 在 pom.xml 文件中添加如下依赖: <dependency> <groupId>org.apache.ignite</groupId> <artifactId>ignite-core</artifact…

    Java 2023年5月19日
    00
  • Java如何分析算法的时间和空间复杂度

    要分析算法的时间和空间复杂度,我们需要了解算法的执行效率以及所占用的内存空间。Java提供一些实用的工具来帮助我们进行分析。具体步骤如下。 1. 编写算法代码 首先,我们需要编写一个算法的代码示例。这个算法可以是排序、查找、遍历等等。为了方便演示,我们这里以一个简单的冒泡排序算法为例: public static void bubbleSort(int[] …

    Java 2023年5月19日
    00
  • javax.validation自定义日期范围校验注解操作

    关于“javax.validation自定义日期范围校验注解操作”的完整攻略,我将从以下三个方面进行详细讲解: 什么是javax.validation自定义注解? 如何实现自定义日期范围校验注解? 示例演示 1. 什么是javax.validation自定义注解? javax.validation是Java中的一种验证框架,它提供了各种验证约束注解,包括@N…

    Java 2023年5月20日
    00
  • Spring打包jar包时jsp页面无法访问问题解决

    针对Spring打包jar包时jsp页面无法访问的问题解决,可以依照以下步骤进行操作: 问题解析 在Spring项目中,我们在开发过程中经常使用jsp页面进行开发和展示,当我们将Spring项目打包成jar包并进行部署时,就会出现jsp页面无法访问的问题。原因是嵌入式Web服务器默认不支持jsp引擎。 解决步骤 步骤一:添加插件和依赖 在Spring项目的p…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部