Java函数如何将数据写入文件并读取文件数据?
Java是一种使用广泛且非常流行的编程语言,它具有跨平台、易于学习和使用的特点,因此被广泛用于开发各种类型的应用程序。在Java中,我们可以使用函数来将数据写入文件并读取文件数据,以便在程序运行期间保存数据、管理数据和恢复数据。本文将深入探讨如何在Java中实现这一过程。
一、将数据写入文件
在Java中,我们可以使用IO体系中的File类和FileWriter类来将数据(如字符串、数字、对象等)写入到文件中。以下是示例代码:
1.使用FileWriter
import java.io.*;
public class WriteToFileExample {
public static void main(String[] args) {
try {
String data = "This is the data that needs to be written into the file.";
FileWriter fileWriter = new FileWriter("filename.txt");
fileWriter.write(data);
fileWriter.close();
System.out.println("Data has been written to the file.");
} catch (IOException ex) {
System.out.println("Error occurred while writing data to the file: " + ex.getMessage());
}
}
}
2.使用PrintWriter
import java.io.*;
public class WriteToFileExample {
public static void main(String[] args) {
try {
PrintWriter writer = new PrintWriter("filename.txt", "UTF-8");
writer.println("The first line");
writer.println("The second line");
writer.close();
System.out.println("Data has been written to the file.");
}
catch (IOException ex) {
System.out.println("Error occurred while writing data to the file: " + ex.getMessage());
}
}
}
上面两个例子都使用文件名“filename.txt”来存储数据。这些代码首先将“FileWriter”或“PrintWriter”类导入程序中,然后使用特定文件名创建该类的实例。可以使用“write”或“println”函数将数据写入文件,之后通过调用“close”方法释放并关闭文件。如果出现错误,则可以使用Java中“try-catch”块来捕获并处理异常。
二、从文件中读取数据
Java中使用File类和FileReader类来读取文件数据。以下是示例代码:
1.使用FileReader
import java.io.*;
public class ReadFromFileExample {
public static void main(String[] args) {
try {
File file = new File("filename.txt");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
fileReader.close();
System.out.println("File has been read successfully.");
} catch (IOException ex) {
System.out.println("Error occurred while reading data from the file: " + ex.getMessage());
}
}
}
2.使用Scanner
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ReadFromFileExample {
public static void main(String[] args) {
try {
File file = new File("filename.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
System.out.println("File has been read successfully.");
} catch (FileNotFoundException e) {
System.out.println("Error occurred while reading data from the file: " + e.getMessage());
}
}
}
以上两个例子都对文件进行读取。这些代码首先使用“FileReader”或“Scanner”类导入程序,并使用指定文件名创建该类的实例。接下来,使用“readLine”或“nextLine”函数从文件中读取每一行数据,并打印每一行数据。最后,使用“close”方法释放并关闭文件。
三、Java对象的写入和读取
Java中可以使用对象流(ObjectOutputStream和ObjectInputStream)来将Java对象写入文件并从文件中读取Java对象。
1.将对象写入文件
import java.io.*;
public class Person implements Serializable {
private String name;
private transient int age;
private char gender;
public Person(String name, int age, char gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
}
public class SerializeExample {
public static void main(String[] args) {
try {
Person person = new Person("Tom", 25, 'M');
FileOutputStream fileOutputStream = new FileOutputStream("person.txt");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(person);
objectOutputStream.flush();
fileOutputStream.close();
System.out.println("Person has been serialized successfully.");
} catch (IOException ex) {
System.out.println("Error occurred while serializing data to the file: " + ex.getMessage());
}
}
}
以上代码创建了一个名为“Person”的类,并在使用“FileOutputStream”和“ObjectOutputStream”类的实例将该对象写入“person.txt”文件之前实例化了该类。使用“writeObject”方法将该对象写入文件并使用“flush”方法将文件“刷新”。最后,使用“close”方法释放并关闭文件。
2.从文件中读取对象
import java.io.*;
public class DeserializeExample {
public static void main(String[] args) {
try {
FileInputStream fileInputStream = new FileInputStream("person.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Person person = (Person) objectInputStream.readObject();
fileInputStream.close();
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
System.out.println("Gender: " + person.getGender());
System.out.println("Person has been deserialized successfully.");
} catch (IOException | ClassNotFoundException ex) {
System.out.println("Error occurred while deserializing data from the file: " + ex.getMessage());
}
}
}
以上代码使用“FileInputStream”和“ObjectInputStream”类的实例从“person.txt”文件中读取数据。使用“readObject”方法将该对象读入程序中并使用“close”方法释放并关闭文件。最后,使用Java的“System.out.println”方法向控制台打印数据。
总结
本文介绍了Java中如何将数据写入文件并从文件中读取数据。使用“FileWriter”或“PrintWriter”类,可以将字符串或数字写入文件;使用“FileReader”或“Scanner”类,可以读取文件中的数据。在Java中,还可以使用对象流(ObjectOutputStream和ObjectInputStream)来将Java对象写入文件并从文件中读取Java对象。这些类和方法可以帮助开发者灵活管理程序中的数据并实现数据持久化和恢复等操作。
