Eclipse Plugin: File zum schreiben öffnen

Vatar

Erfahrenes Mitglied
Moin Moin.
Ich bastele gerade ein kleines Plugin für den Rational Application Developer (= Eclipse 3.0).
In einem Plugin kann ich einen File im Projekt nicht einfach mit
Code:
new File("./resources/nls.ini")...
aufrufen, da die Eclipse die Plugins ja selbst verwaltet.

Einen File zum lesen öffnen funktioniert recht einfach über eine URL.
Code:
// in der erbenden Klase von AbstractPlugin
public URL getResourceURL(String path) {
	    Bundle bundle = Platform.getBundle("com.ibm.low.nls.vizualizer"); //Plugin ID
	    URL fullPathString = BundleUtility.find(bundle, path);
	    return fullPathString;
}
Diese URL öffne ich in einem Stream und basta.

Ich schaffe es aber einfach nicht einen File zum schreiben zu öffnen.
Anfangs kam eine FileNotFoundException
Code:
new FileReader(URL.getFile())
Dann habe ich versucht (da ich einem File auch eine URI übergeben kann) aus der URL eine URI zu machen. Das hat auch funktioniert. Leider kann das File-Objekt mit dem Protokoll bundleentry nix anfangen.

Ich hoffe mal ihr könnt mir helfen, mir fällt nämlich nix mehr ein.
Thx
 
So kannst du aus einem File einlesen

Code:
    String filename = "Datei.txt";
    FileInputStream in = null;

    in = new FileInputStream( filename );

Ich such dir noch was von wegen schreiben
 
Zuletzt bearbeitet:
Sorry, das dürfte so nicht funktionieren.
Eclipse verwaltet seine Plugins ja selbstständig und jedes Plugin nutzt andere Ressourcen. Einlesen konnte ich den File nur so wie oben beschrieben.
Code:
URL url = VizualizerPlugin.getDefault().getResourceURL(filePath);
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
dann kann ich einfach mit readLine drauf zugreifen. Leider kann ich aus der URL die ich bekomme keinen OutputStream öffnen (zumindest entzieht sich das meinen Kenntnissen).
 
Hallo!

Nachtrag:

Code:
 Bundle bundle = ExamplePlugin.getDefault().getBundle();
 		URL url = bundle.getEntry("resources/foo.txt");
 		try {
 			URL realUrl = Platform.resolve(url);
 			File file = new File(realUrl.toURI());
 			BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));
 			bw.write("foo");
 			bw.newLine();
 			bw.close();
 		} catch (IOException e) {
 			e.printStackTrace();
 		} catch (URISyntaxException e) {
 			e.printStackTrace();
 		}

Gruß Tom
 
Das sieht ja schon mal recht gut aus, aber ich bräuchte einen FileWriter.

Hab jetzt mal ein webig mit diesem Path rumprobiert, aber der will auch nicht so recht (FileNotFoundException)
z.B.:
Code:
BufferedWriter bw = new BufferedWriter(new FileWriter(new Path("com.ibm.low.nls.vizualizer", "/resources/nls2.ini").toOSString()));

Trotzdem schon mal Danke.
 
Da war ich wohl etwas zu langsam beim tippen :p

Bekomme zwar noch eine URISyntaxException
Code:
java.net.URISyntaxException: Illegal character in path at index 18: file:/C:/Documents and Settings/Administrator/My Documents/RAD Projects/com.ibm.low.nls.vizualizer/resources/nls2.ini
Aber das bekomm ich noch hin.

Thx (hab da jetzt eine Woche an Zeit verplempert :rolleyes: )
 
Zurück