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