Java中IO函数的使用
Java中的IO函数非常重要,使用它可以实现文件读写、网络传输等常见操作。Java提供了许多IO函数,本文将对其进行解析。
1. File类
File类是Java中管理文件和目录的类。使用File类可以创建、删除、修改、访问文件、目录等操作。
1.1 创建文件
File类提供了创建文件的方法,如下所示:
File file = new File("test.txt");
if (!file.exists()) {
file.createNewFile();
}
1.2 创建目录
File类提供了创建目录的方法,如下所示:
File file = new File("test");
if (!file.exists()) {
file.mkdirs();
}
1.3 删除文件或目录
File类提供了删除文件或目录的方法,如下所示:
File file = new File("test.txt");
if (file.exists()) {
file.delete();
}
File file = new File("test");
if (file.exists()) {
file.delete();
}
2. FileInputStream类和FileOutputStream类
FileInputStream类和FileOutputStream类是Java中用于读取和写入文件的基本类。使用这两个类可以完成对文件的输入输出操作。
2.1 FileInputStream类
FileInputStream类用于从文件中读取数据。使用它可以逐个字节读取文件。
FileInputStream input = new FileInputStream("test.txt");
int data = input.read(); // 读取一个字节
input.close(); // 关闭文件输入流
2.2 FileOutputStream类
FileOutputStream类用于向文件中写入数据。使用它可以逐个字节写入文件。
FileOutputStream output = new FileOutputStream("test.txt");
output.write(97); // 写入一个字节
output.close(); // 关闭文件输出流
3. InputStreamReader类和OutputStreamWriter类
InputStreamReader类和OutputStreamWriter类是Java中用于支持字符流的基本类。使用这两个类可以完成字符集转换操作。
3.1 InputStreamReader类
InputStreamReader类用于将字节流转换为字符流。
FileInputStream input = new FileInputStream("test.txt");
InputStreamReader isr = new InputStreamReader(input, "UTF-8"); // 创建转换流
char[] buffer = new char[1024];
int length = -1;
while ((length = isr.read(buffer)) != -1) {
String str = new String(buffer, 0, length);
}
isr.close(); // 关闭转换流
input.close(); // 关闭文件输入流
3.2 OutputStreamWriter类
OutputStreamWriter类用于将字符流转换为字节流。
FileOutputStream output = new FileOutputStream("test.txt");
OutputStreamWriter osw = new OutputStreamWriter(output, "UTF-8"); // 创建转换流
String str = "Java编程";
osw.write(str, 0, str.length()); // 写入字符串
osw.close(); // 关闭转换流
output.close(); // 关闭文件输出流
4. BufferedReader类和BufferedWriter类
BufferedReader类和BufferedWriter类是Java中用于支持缓冲流的基本类。使用这两个类可以提高读写文件的效率。
4.1 BufferedReader类
BufferedReader类用于从字符流中读取数据,并提供了缓冲的功能。
FileInputStream input = new FileInputStream("test.txt");
InputStreamReader isr = new InputStreamReader(input, "UTF-8"); // 创建转换流
BufferedReader reader = new BufferedReader(isr); // 创建缓冲流
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close(); // 关闭缓冲流
isr.close(); // 关闭转换流
input.close(); // 关闭文件输入流
4.2 BufferedWriter类
BufferedWriter类用于向字符流中写入数据,并提供了缓冲的功能。
FileOutputStream output = new FileOutputStream("test.txt");
OutputStreamWriter osw = new OutputStreamWriter(output, "UTF-8"); // 创建转换流
BufferedWriter writer = new BufferedWriter(osw); // 创建缓冲流
String str = "Java编程";
writer.write(str, 0, str.length()); // 写入字符串
writer.newLine(); // 换行
writer.flush(); // 刷新缓冲流
writer.close(); // 关闭缓冲流
osw.close(); // 关闭转换流
output.close(); // 关闭文件输出流
5. InputStreamReader类和 OutputStreamWriter类的使用
InputStreamReader 和 OutputStreamWriter 在 IO 操作中都扮演重要角色。
读操作:
// 创建FileInputStream流对象 FileInputStream fis = new FileInputStream(file); // 创建InputStreamReader对象 InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); // 创建BufferedReader对象 BufferedReader reader = new BufferedReader(isr);
写操作:
// 创建FileOutputStream流对象 FileOutputStream fos = new FileOutputStream(file); // 创建OutputStreamWriter对象 OutputStreamWriter writer = new OutputStreamWriter(fos, "UTF-8"); // 创建BufferedWriter对象 BufferedWriter writerBuffer = new BufferedWriter(writer);
6. ZipInputStream和ZipOutputStream类
ZipInputStream和ZipOutputStream类用于压缩和解压缩文件或目录。ZipInputStream读取压缩存档,ZipOutputStream创建和写入压缩存档。
6.1 ZipInputStream类
使用ZipInputStream类读取压缩存档,例如读取zip格式的压缩文件:
ZipInputStream zipStream = new ZipInputStream(new FileInputStream("test.zip"));
ZipEntry entry;
while ((entry = zipStream.getNextEntry()) != null) {
String name = entry.getName();
FileOutputStream fout = new FileOutputStream("unzip/" + name);
byte[] buffer = new byte[4096];
int count = -1;
while ((count = zipStream.read(buffer)) != -1) {
fout.write(buffer, 0, count);
}
fout.close();
}
zipStream.close();
6.2 ZipOutputStream类
使用ZipOutputStream类创建和写入压缩存档,例如将多个文件压缩成一个zip格式的压缩文件:
ZipOutputStream zipStream = new ZipOutputStream(new FileOutputStream("test.zip"));
byte[] buffer = new byte[4096];
File[] files = new File[] { new File("test1.txt"), new File("test2.txt") };
for (File file : files) {
FileInputStream fin = new FileInputStream(file);
zipStream.putNextEntry(new ZipEntry(file.getName()));
int count = -1;
while ((count = fin.read(buffer)) != -1) {
zipStream.write(buffer, 0, count);
}
fin.close();
}
zipStream.close();
总结
以上就是Java中IO函数的使用介绍。Java中的IO操作用于文件读写、网络通讯等场景下,是Java语言中不可或缺的一部分。上文列举了Java中的几个IO函数及其使用方式,其中包括FileInputStream类、OutputStreamWriter类、BufferedReader类等。需要提醒的是,进行IO操作时,务必注意关闭流等操作,避免产生资源泄露等问题。
