Java中如何实现文件输入和输出的相关函数?
Java中实现文件输入和输出,需要使用Java的IO流(Input/Output Streams)类库。在Java中,IO流是指用于数据输入和输出的类集,包含了一套输入流和输出流。
Java的IO流类库包含了如下的类:
1. 字节流(Byte Streams)
字节流是以字节为单位进行数据传输的流,使用InputStream和OutputStream类来实现。InputStream类是抽象类,其子类包括ByteArrayInputStream,FileInputStream,PipedInputStream等。而OutputStream类也是抽象类,其子类包括ByteArrayOutputStream,FileOutputStream,PipedOutputStream等。
2. 字符流(Character Streams)
字符流是以字符为单位进行数据传输的流,使用Reader和Writer类来实现。Reader类是抽象类,其子类包括BufferedReader,InputStreamReader,PipedReader等。Writer类也是抽象类,其子类包括BufferedWriter,OutputStreamWriter,PipedWriter等。
接下来我们将会详细介绍如何在Java中实现文件输入和输出的相关函数。
1. 文件输入
在Java中,要想读取文件中的数据,需要使用InputStream类和它的子类FileInputStream来实现。FileInputStream类是InputStream类的一个子类,用于读取文件数据流。
例子1:
import java.io.*;
public class FileInputTest {
public static void main(String args[]) {
try {
FileInputStream input = new FileInputStream("c:/data.txt");
int data;
while ((data = input.read()) != -1) {
System.out.print((char) data);
}
input.close();
} catch (IOException e) {
System.out.println("错误:" + e.getMessage());
}
}
}
在上述代码中,我们首先创建一个FileInputStream对象input,用于读取数据。然后通过while循环逐个读取文件中的数据,直到读取到文件末尾(即read()方法返回-1)。最后关闭流对象input。
2. 文件输出
在Java中,要想将数据写入到文件中,需要使用OutputStream类和它的子类FileOutputStream来实现。FileOutputStream类是OutputStream类的一个子类,用于向文件数据流中写入数据。
例子2:
import java.io.*;
public class FileOutputTest {
public static void main(String args[]) {
try {
FileOutputStream output = new FileOutputStream("c:/test.txt");
byte[] data = "Hello World".getBytes();
output.write(data);
output.close();
} catch (IOException e) {
System.out.println("错误:" + e.getMessage());
}
}
}
在上述代码中,我们首先创建一个FileOutputStream对象output,用于写入数据。然后将字符串“Hello World”转换为byte数组,并通过write()方法将数据写入到文件中。最后关闭流对象output。
3. 缓冲读取
为了提高文件读取和输出的性能,我们可以使用BufferedInputStream和BufferedOutputStream这两个类来进行缓冲读取和输出。
例子3:
import java.io.*;
public class BufferedInputTest {
public static void main(String args[]) throws Exception {
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream("c:/data.txt");
bis = new BufferedInputStream(fis);
byte[] data = new byte[1024];
int len;
while ((len = bis.read(data)) != -1) {
System.out.write(data, 0, len);
}
} finally {
if (bis != null) bis.close();
if (fis != null) fis.close();
}
}
}
在上述代码中,我们通过BufferedInputStream和FileInputStream来进行读取操作,并在while循环中读取文件中的数据,并将其存储在byte数组data中,然后输出到控制台。
4. 缓冲输出
同样,在进行文件输出操作时,我们也可以使用BufferedOutputStream类来实现缓存写入操作。
例子4:
import java.io.*;
public class BufferedOutputTest {
public static void main(String[] args) throws IOException {
FileOutputStream fos = null;
BufferedOutputStream bos = null;
try {
fos = new FileOutputStream("c:/test.txt");
bos = new BufferedOutputStream(fos);
String data = "Hello World";
bos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bos != null) bos.close();
if (fos != null) fos.close();
}
}
}
在上述代码中,我们通过BufferedOutputStream和FileOutputStream来进行写入操作,并将字符串“Hello World”转换为byte数组然后使用write()方法将其输出到文件中。
总结:
在Java中实现文件的输入和输出,需要用到Java的IO流,其中InputStream和OutputStream类用于分别进行文件的读取和输出。为了提高读取和输出的性能,我们还可以使用缓冲读取和缓冲输出的方法,分别使用BufferedInputStream和BufferedOutputStream类进行实现。
