Datei in einem Eclipse Projekt über Plugin zugreifen

  • Themenstarter Themenstarter xhi2018
  • Beginndatum Beginndatum
X

xhi2018

Gast
Hallo,

ich bin dabei ein Plugin für Eclipse zu schreiben.
Dabei ist es notwendig auf eine Datei die in einem (Java-)Projekt im Workspace liegt zuzugreifen. Wo - also in welchem Verzeichnis - diese Datei liegt, ist bekannt. Ich hab das JavaProject Objekt in dem diese Datei liegt.
Die folgende Lösung funktioniert bei mir soweit, mich würde aber interessieren ob es vielleicht noch
eine andere, bessere Möglichkeit gibt...
Java:
...
	try {
			Object[] childs = project.getNonJavaResources();
			for ( int i = 0; i < childs.length; i++ ) {
				if ( childs[i] instanceof IFolder ) {
					IFolder folder = (IFolder) childs[i];
					if ( "dir_of_wanted_file".equals(folder.getName() ) ) {
						IResource[] members = folder.members();
						for (int j = 0; j < members.length; j++) {
							if ( members[j] instanceof IFile && "wanted_file.ini".equals(members[j].getName()) ) {
								readfile(members[j]);
								break;
							}
						}
				    break;
					}
				}
			}
		} catch (JavaModelException e) {
...
		} catch (CoreException e) {
...
		} finally {
...
Oder wie suche ich generell nach Dateien in einem Java Eclipse Projekt, wenn ich z.B. nicht weiss wo die Datei genau liegt... ???:L
Mit der Eclipse API bin ich leider noch nicht soo ganz vertraut... :rtfm:

Vielleicht kann mir jemand von Euch hierzu einen Tipp geben 😉

Gruß & vielen Dank!
 
Über das ResourcesPlugin kommst du an den Workspace, vom Workspace an den Root, vom Root an einzelne Projekte. Auf dem Projekt kannst du dann mit einem Visitor über alle Resourcen gehen um die gesuchte Resource zu finden, oder sie direkt mittels eines Paths ansprechen.
 
Hallo

vielen Dank für den Hinweis auf den Visitor - damit geht's ja echt wesentlich einfacher :toll:
Dann ungefähr so:
Java:
...
		IResourceVisitor myVisitor = new IResourceVisitor() {
			@Override
			public boolean visit(IResource resource) throws CoreException {
				if ( resource.getName().equals("wanted_file.ini") ) {
					readfile(resource);
					return false;
				}
				return true;
			}
		};

		try {
			project.getResource().accept(myVisitor);
		} catch (CoreException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
...
Gruß
 

Neue Themen


Zurück
Oben