Home >Java >javaTutorial >Java multi-threaded file writing

Java multi-threaded file writing

大家讲道理
大家讲道理Original
2016-11-10 10:34:181856browse

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);
 
        }
 
    }
 
}

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:java parsing XML filesNext article:java parsing XML files