В Windows 7: тот же путь, но Explorer и Java видят файлы, отличные от Powershell - PullRequest
3 голосов
/ 28 апреля 2010

Представлен на ваше усмотрение рассказ о бедном маленьком Java-процессе, попавшем в сумеречную зону ...

Прежде чем я подниму руки и просто скажу, что раздел NTFS разбит, есть какое-то рациональное объяснение того, что я вижу. У меня есть файл с таким путем

C:\Program Files\Company\product\config\file.xml

Я читаю этот файл после обновления и вижу что-то странное. Eclipse и мое Java-приложение все еще видят старую версию этого файла, в то время как некоторые другие программы видят новую версию. Тест, который убедил меня, что проблема заключалась не в моем толстом пальце, был

В проводнике я ввел указанный выше путь, и обозреватель отобразил старую версию файла. Принудительная перезагрузка Explorer через Ctrl-F5 все еще возвращает старую версию. Это поведение, которое я получаю в Java. Теперь в PowerShell я ввожу

more "C:\Program Files\Company\product\config\file.xml"

Я вырезал и пропустил путь из Проводника, чтобы убедиться, что я ничего не испортил, и он показывает мне новую версию файла.

Так что для этого аспекта программирования есть ли кеш или какой-то системный компонент, который будет хранить эту устаревшую ссылку. Я несу ответственность за проверку или сброс этого для некоторого класса файлов. Я могу себе представить, что кто-то проявляет "креативность" в том, как обрабатываются XML-файлы, чтобы обеспечить некоторый сигнал или свисток. Но это может быть просто случай.

Любые идеи приветствуются ... Спасибо!

Ответы [ 2 ]

5 голосов
/ 28 апреля 2010

Это связано с виртуализацией UAC. Дополнительные файлы, которые вы видите вживую в C:\Users\<USER>\AppData\Local\VirtualStore\Windows. Это было введено в Vista. Более подробную информацию можно найти в Microsoft Technet .

Вы также можете перейти к призрачной версии файла, перейдя к c:\program files в Проводнике и нажав «Совместимые файлы».

0 голосов
/ 28 апреля 2010

Eclipse имеет свое собственное представление о мире, если вы изменили файл вне eclipse: выберите его (или пакет / папку, в которой он находится) в представлении пакета eclipse и выберите refresh в контекстном меню.

Полагаю, что ваше Java-приложение в eclipse увидит правильную версию (хорошая идея, чтобы ваш проект eclipse и файловая система были синхронизированы).

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