Java中的文件读写函数FileInputStream和FileOutputStream介绍
Java中的文件读写函数FileInputStream和FileOutputStream是Java IO API中最常被使用的两个类。它们分别用于读取和写入文件流。在本文中,我们将介绍这两个类的基本用法和一些实际应用实例。
一、FileInputStream类
FileInputStream类用于从文件中读取数据,并将其转换为字节流。在使用时,通常需要创建一个FileInputStream对象。这个对象有两个常用的构造函数:
1. FileInputStream(File file):通过给定的file对象创建一个FileInputStream对象。
2. FileInputStream(String name):通过给定的文件路径名创建一个FileInputStream对象。
打开一个文件,并读取其中的数据的代码如下:
try {
File file = new File("example.txt");
FileInputStream fis = new FileInputStream(file);
int content;
while ((content = fis.read()) != -1) {
System.out.print((char) content);
}
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
这个代码片段首先创建了一个File对象,用于表示需要读取的文件。然后,利用FileInputStream类中提供的read()方法读取数据。read()方法每次从文件中读取一个字节的数据,并将这个字节转换为int类型返回。当 read()方法读取到文件末尾时,返回-1,整个文件内容读取完成,程序即可退出。
二、FileOutputStream类
FileOutputStream类用于向文件中写入数据。在使用时,通常需要创建一个FileOutputStream对象。这个对象有两个常用的构造函数:
1. FileOutputStream(File file):通过给定的file对象创建一个FileOutputStream对象。
2. FileOutputStream(String name):通过给定的文件路径名创建一个FileOutputStream对象。
打开一个文件,并将一段文本内容写入文件的代码如下:
try {
File file = new File("example.txt");
FileOutputStream fos = new FileOutputStream(file);
String content = "hello world";
byte[] bytes = content.getBytes();
fos.write(bytes);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
这个代码首先创建了一个File对象,用于表示需要写入的文件。然后,利用FileOutputStream类中提供的write()方法将文本内容转换成字节数组,再写入文件中。
三、应用实例
1. 读取二进制文件
如下例子所示,读取一张.jpg图片,并将它的内容写入另一个.jpg文件中。
try {
File file = new File("pic.jpg");
FileInputStream fis = new FileInputStream(file);
File output = new File("output.jpg");
FileOutputStream fos = new FileOutputStream(output);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
首先创建了一个FileInputStream对象和一个FileOutputStream对象,分别读和写图片文件。接着利用一个缓存数组读取文件内容,并通过FileOutputStream将读取到的内容写入文件中。
2. 读取文本文件
如下例所示,读取一个.txt文本文件,并将文件中的内容输出到控制台上:
try {
File file = new File("example.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
首先创建了一个BufferedReader对象,然后创建一个文件读取流,并将它传递给BufferedReader对象,这样就能按行读取文件内容。读取过程中,使用readLine()方法读取文件每一行的内容,并将它输出到控制台上。
四、总结
本文介绍了Java中的文件读写函数FileInputStream和FileOutputStream的基本用法和一些实际应用实例。这些类在Java中是非常常用的,它们提供了对文件的读写操作,并且也提供了方法来确保文件读写的安全性。在实际编程中,我们可以根据实际需求来灵活运用这些类的方法。
