Java文件IO流介绍
- Java文件IO流是Java编程语言中用于读取和写入文件的一组类和接口。这些类和接口位于 java.io包中,提供了丰富的功能来处理文件和目录。
1. File类
- java.io.File类表示文件或目录的路径名。它提供了许多方法来操作文件和目录,如创建、删除、重命名等。
2. FileInputStream和FileOutputStream类
- 这两个类用于从文件中读取数据和向文件中写入数据。FileInputStream类用于读取文件,而FileOutputStream类用于写入文件。
import java.io.*;
public class FileExample {
String datapath="C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt";
public static void main(String[] args) {
FileExample fileExample=new FileExample();
try {
FileExample.fileOutput();
} catch (IOException e) {
throw new RuntimeException(e);
}
try {
FileExample.fileInput();
} catch (IOException e) {
throw new RuntimeException(e);
}
public static void fileOutput() throws IOException{
FileOutputStream fileOutputStream=new FileOutputStream("C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt");
BufferedWriter bufferedWriter=new BufferedWriter(new OutputStreamWriter(fileOutputStream));
fileOutputStream.write("i love you!".getBytes());
fileOutputStream.close();
bufferedWriter.close();
}
public static void fileInput() throws IOException{
FileInputStream fileInputStream=new FileInputStream("C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
bufferedReader.close();
fileInputStream.close();
}
}
3. BufferedReader和BufferedWriter类
- 这两个类用于提高文件读写的性能。它们将数据存储在缓冲区中,然后一次性读取或写入大量数据。BufferedReader类用于读取文本文件,而BufferedWriter类用于写入文本文件。
4. FileReader和FileWriter类
- 这两个类用于读取和写入字符文件。FileReader类用于读取字符文件,而FileWriter类用于写入字符文件。
import java.io.*;
public class FileExample {
String datapath="C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt";
public static void main(String[] args) {
FileExample fileExample=new FileExample();
try {
FileExample.write();
} catch (IOException e) {
throw new RuntimeException(e);
}
try {
FileExample.read();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static void write() throws IOException{
FileWriter fileWriter=new FileWriter("C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt",true);
BufferedWriter bufferedWriter=new BufferedWriter(fileWriter);
bufferedWriter.write("i love you!");
bufferedWriter.newLine();
bufferedWriter.close();
fileWriter.close();
}
public static void read() throws IOException{
FileReader fileReader=new FileReader("C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt");
BufferedReader bufferedReader=new BufferedReader(fileReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
fileReader.close();
bufferedReader.close();
}
}
5. Path类和Files类
- java.nio.file.Path类表示文件系统中的文件路径。java.nio.file.Files类提供了许多静态方法来操作文件和目录,如读取、写入、复制、移动等。
FileInputStream、FileOutputStream类与FileReader、FileWriter类的区别:
1.FileInputStream和FileOutputStream:
- FileInputStream和FileOutputStream类用于处理二进制文件。它们分别用于从文件中读取字节数据和向文件中写入字节数据。这两个类属于java.io包。
- FileInputStream:用于从文件中读取字节数据。它是InputStream的子类,用于从文件系统中的文件读取原始字节流。
- FileOutputStream:用于向文件中写入字节数据。它是OutputStream的子类,用于将原始字节流写入文件系统中的文件。
- 使用FileInputStream和FileOutputStream时,需要处理字节和字节数组。这些类适用于处理图像、音频和视频等二进制文件。
2.FileReader和FileWriter
- FileReader和FileWriter类用于处理文本文件。它们分别用于从文件中读取字符数据和向文件中写入字符数据。这两个类属于java.io包。
- FileReader:用于从文件中读取字符数据。它是Reader的子类,用于读取字符流。FileReader使用默认字符编码和指定的文件名创建一个新的FileReader。
- FileWriter:用于向文件中写入字符数据。它是Writer的子类,用于写入字符流。FileWriter使用默认字符编码和指定的文件名创建一个新的FileWriter。
- 使用FileReader和FileWriter时,需要处理字符和字符数组。这些类适用于处理文本文件,如.txt、.csv等。
文件创建与删除的实现
文件创建:
import java.io.*;
public class FileExample {
public static void main(String[] args) {
File file = new File("D:\\FileExample\\bbbb.txt");
try {
boolean newFileCreated = file.createNewFile();
if (newFileCreated) {
System.out.println("文件创建成功");
} else {
System.out.println("文件创建失败");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件删除
import java.io.*;
public class FileExample {
public static void main(String[] args) {
File file = new File("D:\\FileExample\\bbbb.txt");
try {
boolean fileDeleted = file.delete();
if (fileDeleted) {
System.out.println("文件删除成功");
} else {
System.out.println("文件删除失败");
}
}
}
文件夹创建
public class FileExample {
public static void main(String[] args) {
File folder = new File("D:\\FileExample\\lalala");
if (!folder.exists()) {
boolean folderCreated = folder.mkdirs();
if (folderCreated) {
System.out.println("文件夹创建成功");
} else {
System.out.println("文件夹创建失败");
}
}
}
文件夹删除
public class FileExample {
public static void main(String[] args) {
File folder = new File("D:\\FileExample\\lalala");
if (folder.exists()) {
boolean folderDeleted = folder.delete();
if (folderDeleted) {
System.out.println("文件夹删除成功");
} else {
System.out.println("文件夹删除失败");
}
}
}
文件和文件夹的操作
File
类提供了多种方法来操作文件和文件夹。
- 检查存在性:
exists()
- 删除:
delete()
- 重命名:
renameTo(File dest)
- 获取绝对路径:getAbsolutePath()`
- 设置可读/可写:
setReadable(boolea
n writable, boolean ownerOnly)和
setWritable(boolean writable, boolean ownerOnly)`
列出文件夹内容
- 可以使用
list()
或 listFiles()
方法来列出文件夹中的文件和子文件夹。
public class FileExample {
public static void main(String[] args) {
File folder = new File("D:\\FileExample");
String[] files = folder.list();
for (String file : files) {
System.out.println(file);
}
注意事项
- 在执行文件操作时,需要处理
IOException
。 - 文件和文件夹的操作可能会受到操作系统权限的限制。
- 请确保在实际应用中进行适当的异常处理和权限检查。