如何使用Java函数读写文件并进行相关操作
发布时间:2023-06-10 14:04:22
在Java中,文件的读写操作常常使用Java I/O流来进行,以达到对文件的读写控制。以下是文件的读写最基本的示例:
### 文件读取
import java.io.*;
public class ReadFile {
public static void main(String[] args) {
File file = new File("text.txt");
try {
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
bufferedReader.close();
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述示例中首先创建File对象来代表要读取的文件,使用FileReader和BufferedReader来进行文本文件的读取操作。在读取时使用while循环,逐行读取文件的数据,直到读到文件末尾为止。最后记得关闭文件流。
### 文件写入
import java.io.*;
public class WriteFile {
public static void main(String[] args) {
File file = new File("text.txt");
try {
FileWriter fileWriter = new FileWriter(file);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
String fileContent = "Hello Java!";
bufferedWriter.write(fileContent);
bufferedWriter.flush();
bufferedWriter.close();
fileWriter.close();
System.out.println("File has been written.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
这个示例展示了如何向文本文件中写入数据。首先创建File对象来指示文件,之后使用FileWriter和BufferedWriter进行文件写入操作。在写入数据后使用flush()方法来清空输出缓存区,最后关闭文件流。
### 二进制文件读写
二进制文件一般不像文本文件那么容易解释和读取,因此需要采用字节流来进行读取操作。
import java.io.*;
public class BinaryFileReading {
public static void main(String[] args) {
String filePath = "test.jpg";
try {
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fis.read(data);
fis.close();
System.out.println("File has been read.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意,byte数组的长度应该等于文件的长度,因为read()方法一次性读取文件的所有内容,并将它们存储在byte数组中。
import java.io.*;
public class BinaryFileWriting {
public static void main(String[] args) {
String filePath = "test.jpg";
try {
File file = new File(filePath);
FileOutputStream fos = new FileOutputStream(file);
byte[] data = {0, 1, 2, 3, 4, 5};
fos.write(data);
fos.flush();
fos.close();
System.out.println("File has been written.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
通过使用FileOutputStream和write()方法,读写二进制文件的方式类似于文本文件。
### 对文件进行追加或截取操作
经常需要对文件进行追加和截取操作。例如,某些系统日志可能需要追加操作,因为日志条目会随时增加。同样,如果需要修改已有的文件,就需要截取操作。
import java.io.*;
public class AppendFile {
public static void main(String[] args) {
try (FileWriter fileWriter = new FileWriter("log.txt", true);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
PrintWriter writer = new PrintWriter(bufferedWriter)) {
writer.println("Log entry #1.");
writer.println("Log entry #2.");
System.out.println("The log has been appended.");
} catch (IOException e) {
System.err.println("Caught IOException: " + e.getMessage());
}
}
}
在上述示例中,传递给FileWriter构造函数的第二个参数为true,表示文件追加。PrintWriter的println()方法用于向日志文件中添加新的条目。
import java.io.*;
public class TruncateFile {
public static void main(String[] args) {
File file = new File("log.txt");
try (RandomAccessFile raf = new RandomAccessFile(file, "rw");) {
raf.setLength(0);
System.out.println("The file has been truncated.");
} catch (IOException e) {
System.err.println("Caught IOException: " + e.getMessage());
}
}
}
在这个示例中,使用RandomAccessFile,设置它的长度为0可以将文件截断。
