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

目录

 

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流、递归和字符集。这些技术是处理文件和数据的基础,了解它们可以帮助您开发更强大和灵活的应用程序。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值