2011-06-27 3 views
2

Je souhaite obtenir le gestionnaire IFile pour un fichier dans l'un de mes projets.IWorkspaceRoot.getFileForLocation() renvoie la valeur null

J'ai un projet Java "test" avec le fichier "x.dioc" à l'intérieur. Quand je regarde dans mon système de fichiers local et vérifier le chemin du fichier, il est:
C: \ Users \ Pawel \ runtime-New_configuration \ test \ src \ x.dioc

Maintenant, j'essaie d'obtenir handler:

IPath p = new Path("file:/C:/Users/Pawel/runtime-New_configuration/test/src/x.dioc");
IFile sourceFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(p);

mais je reçois null.

J'ai lu que cette méthode renvoie null si le fichier ne fait pas partie de l'espace de travail. Mais quand je parcours le projet "test" dans l'explorateur de paquets, je peux y voir le fichier "x.dioc".

Quelle pourrait être la cause?

Répondre

1

Je suppose que le chemin du fichier n'est pas correct. Pourquoi avez-vous besoin de spécifier le chemin complet du fichier lorsque vous obtenez la racine de l'espace de travail par programme? Vous pouvez essayer d'utiliser l'une des chaînes suivantes pour le chemin du fichier.
IPath p = new Path("/test/src/x.dioc");
IFile sourceFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(p);

Veuillez me faire savoir si cela fonctionne. Cela fonctionne: IPath p = new Chemin ("/ test/src/x.dioc");
IFile sourceFile = ResourcesPlugin.getWorkspace(). GetRoot(). GetFile (p); Mais getFileForLocation ne l'a pas fait (du moins pour moi). Supprimez le "fichier:" au début de votre variable de chemin.

+0

Malheureusement, ce n'est pas le cas. J'ai essayé différentes combinaisons avec/sans périphérique, différents segments, etc. –

+0

Veuillez passer par [ceci] (http://eclipsesourcecode.appspot.com/jsrcs/org.eclipse.core.tests.resources/src/org/eclipse/core /tests/resources/IWorkspaceTest.java.html) lien, cela peut être utile. – Rakesh

1

Créez simplement le chemin comme ceci:

IPath p = new Path("C:/Users/Pawel/runtime-New_configuration/test/src/x.dioc"); 

Ensuite, votre IFile sourceFile devrait contenir la bonne référence.

1

J'ai utilisé getFile au lieu de getFileForLocation et cela a fonctionné. Merci pour l'aide! :-)

IWorkspaceRoot racine = ResourcesPlugin.getWorkspace(). GetRoot(); IFile resultFile = root.getFile (iPath);

Questions connexes