Java中的文件操作函数:如何读写文件?
Java中的文件操作函数是一组用于读写文件的API,用于处理文件和目录。Java中提供了多种读写文件的方式,包括字节流和字符流、文件读写、缓冲和无缓冲等方式。本文将介绍Java中文件操作函数及其用法。
一、文件读写方式
1. InputStream/OutputStream:字节流,用于二进制文件的读写操作,具体实现类包括FileInputStream/FileOutputStream和ByteArrayInputStream/ByteArrayOutputStream等。
2. Reader/Writer:字符流,用于字符文件的读写操作,具体实现类包括FileReader/FileWriter和StringReader/StringWriter等。
3. RandomAccessFile:随机访问文件,允许程序可以在文件任意位置读写数据,比如可以在文件中寻找或者替换记录,在文件的任意偏移位置添加记录等。
4. BufferedReader/BufferedWriter:缓存流,提供了缓存机制,可以提高读写效率,具体实现类包括BufferedInputStream/BufferedOutputStream和BufferedReader/BufferedWriter等。
二、文件操作函数的使用
1. 文件读取:
Java的文件读取可以使用FileInputStream和FileReader两个类,其中FileInputStream是字节流,FileReader是字符流。
FileInputStream示例代码:
String fileName = "文件路径";
FileInputStream inputStream = new FileInputStream(fileName);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
// 处理读取到的数据
}
inputStream.close();
读取文件时,可以使用字节数组作为缓存读取文件内容,每次读取的数据都会存放到这个数组中,直到文件结尾。
FileReader示例代码:
String fileName = "文件路径";
FileReader reader = new FileReader(fileName);
char[] buffer = new char[1024];
int len = 0;
while ((len = reader.read(buffer)) != -1) {
// 处理读取到的数据
}
reader.close();
读取文本文件时,使用FileReader类更为方便。
2. 文件写入:
Java的文件写入可以使用FileOutputStream和FileWriter两个类,其中FileOutputStream是字节流,FileWriter是字符流。
FileOutputStream示例代码:
String fileName = "文件路径"; FileOutputStream outputStream = new FileOutputStream(fileName); String content = "写入文件内容"; outputStream.write(content.getBytes()); outputStream.close();
写入文件时,需要将字符串转换为字节数组,通过write()方法写入文件。
FileWriter示例代码:
String fileName = "文件路径"; FileWriter writer = new FileWriter(fileName); String content = "写入文件内容"; writer.write(content); writer.close();
写入文本文件时,使用FileWriter类更为方便。
3. 文件拷贝:
Java的文件拷贝可以使用输入流和输出流实现,读取文件内容并向目标文件中输出内容。
String sourceFile = "源文件路径";
String targetFile = "目标文件路径";
InputStream inputStream = new FileInputStream(sourceFile);
OutputStream outputStream = new FileOutputStream(targetFile);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
inputStream.close();
outputStream.close();
通过创建输入流和输出流,实现从源文件读取数据并向目标文件写入数据。
4. 文件复制:
Java的文件复制可以使用File类提供的方法实现,包括copy()和copyTo()方法。
String sourceFile = "源文件路径"; String targetFile = "目标文件路径"; File source = new File(sourceFile); File target = new File(targetFile); FileUtils.copyFile(source, target);
通过使用FileUtils.copyFile()方法,实现对文件的复制。这个方法的实现需要引入commons-io包。
5. 文件删除:
Java的文件删除可以使用File类提供的方法实现,包括delete()和deleteOnExit()方法。
String file = "文件路径";
File f = new File(file);
if (f.exists()) {
f.delete();
}
通过使用delete()方法,实现对文件的删除,这个方法将直接删除文件。如果只想在程序结束时删除文件,可以使用deleteOnExit()方法。
6. 文件遍历:
Java提供了遍历文件目录的方法,包括list()、listFiles()和walk()方法。
String fileDirectory = "文件夹路径";
File file = new File(fileDirectory);
// 列出当前目录下的所有文件和目录
String[] fileList = file.list();
for (String fileName : fileList) {
System.out.println(fileName);
}
// 列出当前目录下的所有文件和目录及其子目录下的所有文件和目录
File[] files = file.listFiles();
for (File f : files) {
if (f.isDirectory()) {
System.out.println("目录:" + f.getAbsolutePath());
} else {
System.out.println("文件:" + f.getAbsolutePath());
}
}
// 遍历当前目录下的所有文件和目录及其子目录下的所有文件和目录
Files.walk(Paths.get(fileDirectory))
.forEach(filePath -> {
if (Files.isDirectory(filePath)) {
System.out.println("目录:" + filePath);
} else {
System.out.println("文件:" + filePath);
}
});
通过list()方法列出所有文件名,通过listFiles()方法列出File对象,通过walk()方法遍历文件树。
三、总结
Java提供了多种读写文件的方式,包括字节流和字符流、文件读写、缓冲和无缓冲等方式。文件操作函数的使用需要根据具体的应用场景来选择,Java提供的文件操作函数可以满足绝大部分需求。在进行文件操作时,应该注意文件的打开和关闭操作,避免出现文件打开后无法关闭的情况。
