如何用线程写入文件?

时间:2015-09-12 13:27:12

标签: java multithreading file filewriter

如何用线程写入文件?每个文件应为100行,每行长度为100个字符。这项工作必须执行线程和I \ O。

我的代码:

public class CustomThread extends Thread{
        private Thread t;
        private String threadName;

    CustomThread(String threadName){
        this.threadName = threadName;
    }

public void run () {
 if (t == null)
      {
         t = new Thread (this);
      }
         add(threadName);
}

public synchronized void add(String threadName){

        File f = new File(threadName + ".txt");

        if (!f.exists()) {
            try {
                f.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
                System.out.println("File does not exists!");
            }
        }

        FileWriter fw = null;
        try {
        fw = new FileWriter(f);
        for (int i = 0; i < 100; i++) {
            for (int j = 0; j < 100; j++) {
                fw.write(threadName);
                fw.write('\n');
            }

        }

        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("File does not exists!");
        } 
        }
}

我的代码是否正确?我需要创建100行和100个字符的文件。 Сharacter必须依赖于文件名。如果我创建一个名为1的文件,并且填充的名称必须为1.谢谢。

1 个答案:

答案 0 :(得分:1)

根据您的要求,您的代码看起来是正确的,即写入100行,每行包含100个字符。假设是,线程的名称将是单个字符,因为您正在将threadName写入文件。我有很少的结束建议来完成您的实施。他们自己测试一下。如果您发现任何问题,请进行评论。

  1. 要使每行100个字符,您需要将new line个字符语句移动到外部循环。
  2. 完成写入所有数据到文件后,请执行flush()close()文件,以便保存。
  3. 您正在使用threadName创建文件,您可能希望为要创建的文件添加起始路径位置。
  4. 显然你缺少main()方法。创建类的对象和start()线程。
  5. 您不需要创建单独的Thread实例,run()方法将在单独的线程中执行,因为您正在扩展Thread类。