21xrx.com
2024-06-03 01:42:28 Monday
登录
文章检索 我的文章 写文章
Java实现多线程读写文件的完整代码
2023-07-13 07:24:12 深夜i     --     --
Java 多线程 读写文件 代码实现

Java作为一种高级编程语言,已被广泛应用于各种领域,其中文件读写就是常见的使用场景之一。在Java中,使用多线程实现文件读写可以提高程序的效率和性能。

下面是Java实现多线程读写文件的完整代码:


import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Scanner;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

public class MultiThreadReadWriteFile {

  public static void main(String[] args) throws Exception {

    Scanner scanner = new Scanner(System.in);

    System.out.print("请输入要读写的文件路径:");

    String filePath = scanner.nextLine();

    scanner.close();

    File file = new File(filePath);

    if (!file.exists() || !file.isFile()) {

      throw new RuntimeException("文件不存在或不是文件");

    }

    ExecutorService executor = Executors.newFixedThreadPool(2);

    executor.execute(new ReadFileThread(file));

    executor.execute(new WriteFileThread(file, "hello, world!"));

    executor.shutdown();

  }

}

class ReadFileThread implements Runnable {

  private File file;

  public ReadFileThread(File file)

    this.file = file;

  

  @Override

  public void run() {

    try (BufferedReader reader = new BufferedReader(new FileReader(file))) {

      String line = null;

      while ((line = reader.readLine()) != null) {

        System.out.println(line);

      }

    } catch (IOException e) {

      e.printStackTrace();

    }

  }

}

class WriteFileThread implements Runnable {

  private File file;

  private String content;

  public WriteFileThread(File file, String content)

    this.file = file;

    this.content = content;

  

  @Override

  public void run() {

    try (FileWriter writer = new FileWriter(file)) {

      writer.write(content);

    } catch (IOException e) {

      e.printStackTrace();

    }

  }

}

该代码创建了一个`MultiThreadReadWriteFile`类,该类中包含了`main`方法,用于测试多线程读写文件的效果。在`main`方法中,用户需要输入要读写的文件路径,代码首先对文件进行了存在性和是否为文件的校验,然后创建了一个线程池`ExecutorService`,其中包含两个线程:`ReadFileThread`和`WriteFileThread`。`ReadFileThread`用于读取文件内容并输出到控制台,`WriteFileThread`用于向文件中写入字符串`"hello, world!"`。

`ReadFileThread`和`WriteFileThread`分别实现了`Runnable`接口,在`run`方法中实现了实际的读写功能。读取文件内容时,使用`BufferedReader`,每次读取一行内容并输出到控制台;写入文件内容时,使用`FileWriter`,将字符串`"hello, world!"`写入到文件中。

最后,程序调用线程池的`shutdown`方法来关闭线程池。

通过使用多线程,程序可以在读写文件时同时进行,从而提高程序的效率。在实际开发中,可以根据具体情况调整线程池的大小和线程的实现方式,来充分发挥Java多线程读写文件的优势。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复