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日

相关文章

  • php中最简单的字符串匹配算法

    下面是关于“php中最简单的字符串匹配算法”的详细讲解攻略: 简介 字符串匹配算法是一种常见的算法,在实际的开发中非常常见,例如搜索引擎中的搜索功能、字符串替换等。在PHP中,字符串匹配算法通常用于文本处理、爬虫等场景。本文将介绍PHP中最简单的字符串匹配算法——暴力匹配法,以及该算法的核心原理和应用场景。 暴力匹配法 暴力匹配法是最简单粗暴的一种字符串匹配…

    Java 2023年5月19日
    00
  • Mybatis动态SQL实例详解

    Mybatis动态SQL实例详解 Mybatis支持使用动态SQL构建更加灵活的SQL语句,可以根据传入的参数自动生成SQL语句,从而支持更加复杂的业务场景。 if标签 if标签用于判断某个条件是否成立,如果成立则执行相应的语句。 示例代码: <select id="getUserById" parameterType="…

    Java 2023年5月20日
    00
  • Spring Security 自定义授权服务器实践记录

    Spring Security 自定义授权服务器实践记录 介绍 Spring Security是一个功能非常强大的安全框架,可以用于处理各种身份认证和授权问题。其中,授权服务器是Spring Security的重要组成部分,用于为客户端颁发访问令牌,同时对请求进行验证和授权。本文将详细介绍如何使用Spring Security自定义授权服务器,并给出两个示例…

    Java 2023年5月20日
    00
  • 在JavaScript中调用Java类和接口的方法

    在JavaScript中调用Java类和接口的方法,一般需要通过Java的JavaScript引擎来实现。下面,我们将详细介绍调用Java类和接口方法的完整攻略。 步骤一:创建Java类和接口 为了在JavaScript中调用Java类和接口的方法,我们首先需要创建相应的Java类和接口。这里以Java类Calculator和Java接口Greeting为例…

    Java 2023年5月26日
    00
  • Java的Struts框架中配置国际化的资源存储的要点解析

    Java的Struts框架支持使用国际化(i18n)来为不同语言的用户提供不同的用户界面。在Struts中配置国际化的资源存储主要包括三个要点,分别是资源文件的命名规则、资源文件的组织结构以及使用资源文件的方法。 资源文件的命名规则 Struts框架支持使用.properties文件来存储国际化资源信息,文件的名称要遵循一定的命名规则。文件名由以下三部分组成…

    Java 2023年5月20日
    00
  • JDBC示例代码

    JDBC(Java Database Connectivity)是 Java 中连接不同数据库并实现数据操作的 API。下面是 JDBC 示例代码的完整攻略。 环境准备 在开始编写 JDBC 代码之前,需要先完成以下步骤: 下载并安装关系型数据库(如 MySQL、Oracle 等)。以下示例以 MySQL 为例。 下载并安装 JDBC 驱动程序。可以到官网下…

    Java 2023年5月20日
    00
  • springboot框架阿里开源低代码工具LowCodeEngine

    下面给你详细讲解“springboot框架阿里开源低代码工具LowCodeEngine”的完整攻略。 介绍 LowCodeEngine 是一个基于SpringBoot框架的阿里开源低代码工具,它帮助开发者快速生成和组装 REST 接口,可以通过简单的配置文件来实现,也支持自定义。 安装步骤 下载LowCodeEngine源码包 使用Maven进行编译打包 部…

    Java 2023年5月19日
    00
  • SpringMVC文件上传中要解决的问题大汇总

    针对“SpringMVC文件上传中要解决的问题大汇总”的完整攻略,我将从以下几个方面一一介绍: 文件上传的大致流程及相关注意点; 文件上传时可能出现的问题; 解决问题的具体方式及示例。 1. 文件上传的大致流程及相关注意点 一般来说,SpringMVC文件上传的大致流程是这样的: 客户端通过表单提交文件的请求到后台; 后台获取到上传请求后,将文件进行存储。 …

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