Где хранится экземпляр Java-файла? - PullRequest
0 голосов
/ 22 августа 2011

У меня есть вопрос относительно класса Java File.Когда я создаю экземпляр File, например,

File aFile = new File(path);

Где экземпляр aFile хранится на компьютере?Или это хранит в JVM?Я имею в виду, есть ли временный файл, хранящийся на локальном диске?

Если у меня есть экземпляр InputStream и записать его в файл с помощью OutputSteam, например

  File aFile = new File("test.txt");

  OutputStream anOutputStream = new FileOutputStream(aFile);

  byte aBuffer[] = new byte[1024];

  while( ( iLength = anInputStream.read( aBuffer ) ) > 0)
  {
    anOutputStream.write( aBuffer, 0, iLength);
  }

Теперь, где жефайл test.txt хранит?

Заранее спасибо!

Ответы [ 3 ]

4 голосов
/ 22 августа 2011

A File объект вообще не является настоящим файлом - это просто имя файла / местоположение и методы, которые подключаются к файловой системе, чтобы проверить, существует ли файл на самом деле и т. Д. Нет содержимого напрямую связано с экземпляром File - это не похоже на виртуальный файл в памяти, например. Сам экземпляр является просто объектом в памяти, как и любой другой объект.

Создание экземпляра File само по себе ничего для файловой системы не делает.

Однако, когда вы создаете FileOutputStream, влияет на любую файловую систему, в которую вы пишете. Экземпляр File относительно не имеет значения - вы получите тот же эффект от:

OutputStream anOutputStream = new FileOutputStream("test.txt");
1 голос
/ 22 августа 2011

Будет записан файл, в который вы указываете его с аргументом пути.

В вашем случае он запишет его в каталог, где вы запускаете свой класс Java.

Если вы укажете /test/myproject/myfile.txt

это будет идти в /test/myproject/myfile.txt

0 голосов
/ 22 августа 2011

Если вы не указали путь, он находится в текущем каталоге (т. Е. В каталоге, из которого выполняется java.exe). Если вы укажете полный путь, он будет сохранен там.В любом случае, он всегда хранится в файловой системе, а не в памяти JVM.

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