Shared memory (file base) in Java
import java.io.File;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileChannel.MapMode;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SmWrite {
public static void main(String[] args) throws Exception {
File file = new File("c:/mem.txt");
int length = (int) file.length();
String mode = "rw";
FileChannel fc = new RandomAccessFile(file, mode).getChannel();
MappedByteBuffer mbb = fc.map(MapMode.READ_WRITE, 0, length);
String format = "yyyy/MM/dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(format);
while (true) {
String now = sdf.format(new Date());
byte[] b = now.getBytes();
mbb.rewind();
mbb.put(b, 0, b.length);
mbb.force();
Thread.sleep(1000);
}
}
}
import java.io.File;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileChannel.MapMode;
import java.text.SimpleDateFormat;
public class SmRead {
public static void main(String[] args) throws Exception {
File file = new File("c:/mem.txt");
int length = (int) file.length();
String mode = "rw";
FileChannel fc = new RandomAccessFile(file, mode).getChannel();
MappedByteBuffer mbb = fc.map(MapMode.READ_WRITE, 0, length);
String format = "yyyy/MM/dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(format);
byte[] b = new byte[format.length()];
while (true) {
mbb.rewind();
mbb.get(b, 0, b.length);
String now = new String(b);
System.out.println(now);
Thread.sleep(1000);
}
}
}
reference :
http://www.javaworld.com.tw/jute/post/view?bid=29&id=273887