欢迎访问宙启技术站
智能推送

Java中IO函数的使用

发布时间:2023-06-22 15:25:26

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操作时,务必注意关闭流等操作,避免产生资源泄露等问题。