создать файл в кеше - PullRequest
       5

создать файл в кеше

0 голосов
/ 30 января 2012

Мое требование такое, у меня нет целевого файла, расположенного на моем диске, чтобы записать в него выходной поток.Итак, возможно ли создать файл в самом кэше?Использование Java.

Ответы [ 4 ]

0 голосов
/ 30 января 2012

вы хотите создать временный файл?Попробуйте

File.createTempFile();
0 голосов
/ 30 января 2012

Кэш недоступен для программы, он использует политику замены для хранения данных, локальных для процессора, чтобы уменьшить количество относительно дорогих выборок из памяти.

Я подозреваю, что вы действительно хотите записать в памятьВ среде Linux вы можете сделать это, используя разделяемую память /dev/shm, это часть системной памяти, которая была сопоставлена ​​с файловой системой.Для примера, как это сочетается с java.nio.channels.FileChannel, посмотрите на этот код

0 голосов
/ 30 января 2012

Если вы думаете о файлах с отображением в памяти, попробуйте это

//: c12:LargeMappedFiles.java
// Creating a very large file using mapping.
import java.io.*;
import java.nio.*;
import java.nio.channels.*;

public class LargeMappedFiles {
  static int length = 0x8FFFFFF; // 128 Mb
  public static void main(String[] args) throws Exception {
    MappedByteBuffer out = 
      new RandomAccessFile("test.dat", "rw").getChannel()
      .map(FileChannel.MapMode.READ_WRITE, 0, length);
    for(int i = 0; i < length; i++)
      out.put((byte)'x');
    System.out.println("Finished writing");
    for(int i = length/2; i < length/2 + 6; i++)
      System.out.print((char)out.get(i));
  }
} ///:~

образец от здесь

0 голосов
/ 30 января 2012

Я подозреваю, что вы хотите ByteArrayOutputStream , который позволяет записывать в поток в памяти вместо записи на диск.

Если вы имеете в виду ЦП или дисковые кэши, можетеВы говорите, почему и чего вы пытаетесь достичь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...