Java函数:如何使用Java函数实现对文件的读取和写入?
Java函数可以实现对文件的读取和写入。在Java中,提供了很多类来实现文件的读取和写入操作,包括FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter等。下面分别介绍这些类如何使用Java函数实现对文件的读取和写入。
一、FileInputStream和FileOutputStream
FileInputStream和FileOutputStream是Java中最基本的文件读取和写入类。使用这两个类可以实现对文件的输入输出,包括二进制文件和文本文件的读写。
下面是FileInputStream的读取示例:
File file = new File("test.txt");
FileInputStream fis = new FileInputStream(file);
byte[] b = new byte[(int) file.length()];
fis.read(b);
fis.close();
String s = new String(b);
System.out.println(s);
在该示例中,我们首先创建一个File对象,指向文件“test.txt”。然后使用FileInputStream类来读取这个文件,将文件中的所有字节读取到一个byte数组中,最后将byte数组转换成字符串并输出到控制台。
下面是FileOutputStream的写入示例:
File file = new File("test.txt");
FileOutputStream fos = new FileOutputStream(file);
String s = "hello world!";
byte[] b = s.getBytes();
fos.write(b);
fos.close();
在该示例中,我们首先创建一个File对象,同样指向文件“test.txt”。然后使用FileOutputStream类来写入这个文件,将字符串“hello world!”转换成byte数组并写入文件。
二、FileReader和FileWriter
FileReader和FileWriter是Java中用于读取和写入文本文件的类。使用这两个类可以很方便地读写文本文件。
下面是FileReader的读取示例:
File file = new File("test.txt");
FileReader fr = new FileReader(file);
char[] c = new char[(int) file.length()];
fr.read(c);
fr.close();
String s = new String(c);
System.out.println(s);
在该示例中,我们同样创建一个File对象,然后使用FileReader类来读取文件。不过注意的是,FileReader类读取的是字符流,因此我们需要将读取到的字符转换成字符串。
下面是FileWriter的写入示例:
File file = new File("test.txt");
FileWriter fw = new FileWriter(file);
String s = "hello world!";
fw.write(s);
fw.close();
在该示例中,我们同样创建一个File对象,然后使用FileWriter类来向文件写入字符串“hello world!”。
三、BufferedInputStream和BufferedOutputStream
BufferedInputStream和BufferedOutputStream是Java中带缓冲区的文件读写类。使用这两个类可以提高文件读写效率。
下面是BufferedInputStream的读取示例:
File file = new File("test.txt");
InputStream is = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(is);
byte[] b = new byte[(int) file.length()];
bis.read(b);
bis.close();
String s = new String(b);
System.out.println(s);
在该示例中,我们同样创建一个File对象,并使用FileInputStream来读取文件。不过在此之前我们创建了一个BufferedInputStream类,该类会自动创建一个默认大小的缓冲区来提高读取速度。
下面是BufferedOutputStream的写入示例:
File file = new File("test.txt");
OutputStream os = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(os);
String s = "hello world!";
byte[] b = s.getBytes();
bos.write(b);
bos.flush();
bos.close();
在该示例中,我们同样创建一个File对象,并使用FileOutputStream来写入文件。在此之前我们创建了一个BufferedOutputStream类,该类会自动创建一个默认大小的缓冲区来提高写入速度。注意,当使用BufferedOutputStream时,需要调用flush()方法将缓冲区中的内容写入文件。
四、BufferedReader和BufferedWriter
BufferedReader和BufferedWriter是Java中用于读取和写入文本文件的带缓冲区的类。和BufferedInputStream、BufferedOutputStream一样,使用这两个类可以提高文本文件读写效率。
下面是BufferedReader的读取示例:
File file = new File("test.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String s;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
br.close();
在该示例中,我们同样创建了一个File对象,并使用FileReader来读取文本文件。不过在此之前我们创建了一个BufferedReader对象,并使用它的readLine()方法逐行读取文本文件。readLine()方法返回的是字符串对象,如果读取到文件末尾则返回null。
下面是BufferedWriter的写入示例:
File file = new File("test.txt");
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
String s = "hello world!";
bw.write(s);
bw.newLine();
bw.flush();
bw.close();
在该示例中,我们同样创建一个File对象,并使用FileWriter来写入文本文件。在此之前我们创建了一个BufferedWriter对象,并使用它的write()方法写入字符串对象。注意,当使用BufferedWriter时,需要调用newLine()方法将写入的字符串换行,并调用flush()方法将缓冲区中的内容写入文件。
总结
Java函数可以使用多种类实现对文件的读取和写入,包括FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter等。其中,BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter这四个类可以提高文件读写效率,因此在开发中会更加常用。不过无论选择哪种方式,都需要注意在读写文件的过程中进行必要的异常处理。
