Maison > Java > javaDidacticiel > Java 多线程写文件

Java 多线程写文件

大家讲道理
Libérer: 2016-11-10 10:34:18
original
1851 Les gens l'ont consulté

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);
 
        }
 
    }
 
}
Copier après la connexion

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal