Я пытаюсь выяснить, как java пишет байты на диск.Операция записи на Java io_append io_write
Если я смотрю на реализацию Randomaccesfile, он имеет , объявленный родным методом, и вызывает указанный нативный метод для записи на диск при вызове write (byte []).
исходный код для randomaccesfile: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/io/RandomAccessFile.java#RandomAccessFile.writeBytes%28byte%5B%5D%2Cint%2Cint%29
private native void writeBytes(byte b[], int off, int len) throws IOException;
public void write(byte b[]) throws IOException {
writeBytes(b, 0, b.length);
}
Я искал внутри OpenJDK для writeBytes и нашел его в io_util.c
Здесь функции IO_Append(fd, buf+off, len);
и IO_Write(fd, buf+off, len);
называются.
этих функций можно найти в Windows, и Solaris внутри JDK в io_util_md.h
/*
* Route the routines
*/
#define IO_Sync fsync
#define IO_Read handleRead
#define IO_Write handleWrite
#define IO_Append handleWrite
#define IO_Available handleAvailable
#define IO_SetLength handleSetLength
Почему я не могу найти то же самое для Linux? И что io_append
и io_write
на самом деле? Я могу» t найти, как они реализованы.