Rumah > Java > javaTutorial > Java 多线程写文件

Java 多线程写文件

大家讲道理
Lepaskan: 2016-11-10 10:34:18
asal
1851 orang telah melayarinya

import java.io.File;
 
import java.io.IOException;
 
import java.io.RandomAccessFile;
 
import java.nio.channels.FileChannel;
 
import java.nio.channels.FileLock;
 
 
 
/**
 
 * @author DBJ
 
 *
 
 */
 
public class MyThreadInfoWritor {
 
 
    private String filename;
 
    /**
 
     *
 
     */
 
    public MyThreadInfoWritor(String fileName) {
 
        this.filename = fileName;
 
    }
 
 
    public void write(MyThreadInfo tInfo) {
 
 
        RandomAccessFile out = null;
 
        File file = new File(this.filename);
 
        try {
 
            if (!file.exists()) {
 
                file.createNewFile();
 
                out = new RandomAccessFile(file, "rw");
 
            }
 
            out = new RandomAccessFile(file, "rw");
 
 
            FileChannel fcout = out.getChannel();
 
            FileLock flout = null;
 
            while (true) {
 
                try {
 
                    flout = fcout.lock();
 
                    break;
 
                } catch (Exception e) {
 
                    System.out.println("其他线程正在操作该文件,当前线程休眠1000毫秒");
 
                    try {
 
                        Thread.sleep(1000);
 
                    } catch (InterruptedException e1) {
 
                        e1.printStackTrace();
 
                    }
 
                }
 
            }
 
 
            long fileLength = out.length();
 
             out.seek(fileLength);
 
            out.write(tInfo.toString().getBytes("utf8"));
 
 
            flout.release();
 
            fcout.close();
 
            out.close();
 
            out = null;
 
        } catch (IOException e) {
 
            file.deleteOnExit();
 
            System.out.println("Exception encountered: " + e);
 
        }
 
    }
 
}
Salin selepas log masuk

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan