Mam obiekt IFile
, który musi być użyty jako obiekt java.io.File. Konwertuję za pomocą następującego kodu.Konwertuj plik IFIL do pliku
file = ifile.getFullPath().toFile();
Jednak połączenie z file.exists()
zwraca wartość false.
Mam obiekt IFile
, który musi być użyty jako obiekt java.io.File. Konwertuję za pomocą następującego kodu.Konwertuj plik IFIL do pliku
file = ifile.getFullPath().toFile();
Jednak połączenie z file.exists()
zwraca wartość false.
Chcesz użyć IResource.getLocation()
, która zwraca ścieżkę pliku lokalnego. Przeczytaj jednak uważnie komentarze javadoc, ponieważ nie można założyć, że dany zasób jest wspierany przez rzeczywisty plik (może to być wszystko w zależności od konfiguracji projektu).
Sugestia Francisa działa dobrze. Inną opcją, którą w końcu wykorzystałem, jest 'file = ifile.getRawLocation(). MakeAbsolute(). ToFile();' – Viral
IFile jest częścią zapytania do zmodyfikowanego obszaru roboczego, a nie rzeczywistego pliku. IPath jest również częścią kwerendy, która jest ważna w Workspace.
Fizycznie IFIL może nie być zawarty w Workspace, np. Clonned Git Project. Niektóre elementy mogą być prostym linkiem, a nie rzeczywistym plikiem. A niektóre elementy IFIL mogą faktycznie istnieć w zdalnej lokalizacji.
Eclipse korzysta z niezależnego systemu plików o nazwie "EFS". EFS zarządza plikami w obszarze roboczym i rodzimym systemie plików. Możesz zlokalizować plik lokalny przy pomocy EFS. (Jeśli istnieje w wersji lokalnej)
IFile file = ...;
// gets URI for EFS.
URI uri = file.getLocationURI();
// what if file is a link, resolve it.
if(file.isLinked()){
uri = file.getRawLocationURI();
}
// Gets native File using EFS
File javaFile = EFS.getStore(uri).toLocalFile(0, new NullProgressMonitor());
"Ale wywołanie file.exists() zwraca wartość false." Oznacza to, że plik nie zostanie zamknięty lub ścieżka jest nieprawidłowa. Czy próbowałeś również 'ifile.exists()'? –