锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. JAVA
  4. java中的文件操作、IO流、递归和字符集

java中的文件操作、IO流、递归和字符集

0
  • JAVA
  • 发布于 2024-09-21
  • 0 次阅读
黄健
黄健

目录

File类的使用

创建File对象

创建和删除文件

遍历文件夹

IO流

字节流

读取文件

字符流

读取文本文件

写入文本文件

递归

计算阶乘

文件搜索

字符集

编码与解码


File类的使用

在Java中,File类用于表示文件和目录的路径。它提供了一些方法来创建、删除、获取文件信息等操作,但不能直接用于读写文件内容。

创建File对象

import java.io.File;

public class FileExample {
    public static void main(String[] args) {
        // 创建File对象
        File file = new File("example.txt");

        // 判断文件是否存在
        if (file.exists()) {
            System.out.println("文件存在");
        } else {
            System.out.println("文件不存在");
        }
    }
}

在上面的代码中,我们使用File类来检查一个文件是否存在。

创建和删除文件

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

public class CreateDeleteFile {
    public static void main(String[] args) {
        File file = new File("example.txt");

        try {
            // 创建新文件
            if (file.createNewFile()) {
                System.out.println("文件已创建");
            } else {
                System.out.println("文件已存在");
            }

            // 删除文件
            if (file.delete()) {
                System.out.println("文件已删除");
            } else {
                System.out.println("删除文件失败");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这段代码展示了如何创建和删除文件。使用createNewFile()方法创建文件,使用delete()方法删除文件。

遍历文件夹

import java.io.File;

public class ListFiles {
    public static void main(String[] args) {
        File dir = new File("path/to/directory");

        // 列出目录中的文件和目录
        String[] files = dir.list();
        if (files != null) {
            for (String file : files) {
                System.out.println(file);
            }
        }
    }
}

使用list()方法可以遍历指定目录下的所有文件和文件夹。

IO流

IO流是Java中用于处理输入和输出的类,包括字节流和字符流。

字节流

字节流用于处理字节数据,可以用于读取和写入二进制数据。

读取文件

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

public class ByteInputStreamExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("example.txt")) {
            int content;
            while ((content = fis.read()) != -1) {
                System.out.print((char) content);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码使用FileInputStream读取文件的字节内容并输出。

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

public class ByteOutputStreamExample {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("example.txt")) {
            String data = "Hello, World!";
            fos.write(data.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用FileOutputStream将字符串写入文件中。

字符流

字符流用于处理字符数据,适合处理文本文件。

读取文本文件

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

public class CharInputStreamExample {
    public static void main(String[] args) {
        try (FileReader fr = new FileReader("example.txt")) {
            int content;
            while ((content = fr.read()) != -1) {
                System.out.print((char) content);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

FileReader用于读取文本文件中的字符数据。

写入文本文件

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

public class CharOutputStreamExample {
    public static void main(String[] args) {
        try (FileWriter fw = new FileWriter("example.txt")) {
            fw.write("Hello, World!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

递归

递归是一种解决问题的方法,其中函数会直接或间接调用自身。

计算阶乘

public class Factorial {
    public static void main(String[] args) {
        int number = 5;
        System.out.println(number + "的阶乘是:" + factorial(number));
    }

    public static int factorial(int n) {
        if (n == 1) {
            return 1;
        } else {
            return n * factorial(n - 1);
        }
    }
}

上面的递归方法计算一个数字的阶乘。

文件搜索

import java.io.File;

public class FileSearch {
    public static void main(String[] args) {
        File dir = new File("path/to/search");
        String filename = "target.txt";
        searchFile(dir, filename);
    }

    public static void searchFile(File dir, String filename) {
        if (dir.isDirectory()) {
            File[] files = dir.listFiles();
            if (files != null) {
                for (File file : files) {
                    if (file.isDirectory()) {
                        searchFile(file, filename);
                    } else if (file.getName().equals(filename)) {
                        System.out.println("找到文件:" + file.getAbsolutePath());
                    }
                }
            }
        }
    }
}

递归用于在指定目录及其子目录中搜索目标文件。

字符集

字符集是字符和字节之间转换的规则。在Java中,常用的字符集包括ASCII、GBK和UTF-8。

编码与解码

import java.nio.charset.StandardCharsets;
import java.util.Arrays;

public class CharsetExample {
    public static void main(String[] args) {
        String text = "Hello, 世界";

        // 编码
        byte[] utf8Bytes = text.getBytes(StandardCharsets.UTF_8);
        System.out.println("UTF-8 编码: " + Arrays.toString(utf8Bytes));

        // 解码
        String decodedText = new String(utf8Bytes, StandardCharsets.UTF_8);
        System.out.println("解码后的字符串: " + decodedText);
    }
}

这段代码展示了如何使用UTF-8字符集对字符串进行编码和解码。

通过这些示例,您可以理解如何在Java中使用文件操作、IO流、递归和字符集。这些技术是处理文件和数据的基础,了解它们可以帮助您开发更强大和灵活的应用程序。

原文链接: https://blog.csdn.net/2302_80084329/article/details/141038815

标签: #JAVA 991 #软件开发 1171
相关文章

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

SpringBoot整合异步任务执行 2024-10-08 11:24

同步任务: 同步任务是在单线程中按顺序执行,每次只有一个任务在执行,不会引发线程安全和数据一致性等 并发问题 同步任务需要等待任务执行完成后才能执行下一个任务,无法同时处理多个任务,响应慢,影响用 户体验 异步任务: 异步任务是在多线程中同时执行,多个任务可以并发执行,同时处理多个请求,响应快,资源

springboot kafka多数据源,通过配置动态加载发送者和消费者 2024-10-08 11:24

前言 最近做项目,需要支持kafka多数据源,实际上我们也可以通过代码固定写死多套kafka集群逻辑,但是如果需要不修改代码扩展呢,因为kafka本身不处理额外逻辑,只是起到削峰,和数据的传递,那么就需要对架构做一定的设计了。 准备test kafka本身非常容易上手,如果我们需要单元测试,引入ja

SpringBoot 集成 Redis 2024-10-08 11:24

一:SpringBoot 集成 Redis ①Redis是一个 NoSQL(not only)数据库, 常作用缓存 Cache 使用。 ②Redis是一个中间件、是一个独立的服务器;常用的数据类型: string , hash ,set ,zset , list ③通过Redis客户端可以使用多种语

SpringBoot整合QQ邮箱 2024-10-08 11:24

SpringBoot可以通过导入依赖的方式集成多种技术,这当然少不了我们常用的邮箱,现在本章演示SpringBoot整合QQ邮箱发送邮件…. 下面按步骤进行: 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域,如果当前账号未开启的话自己手动开启。

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.