Plattformunabhängig Ordner und Datei in Workspace anlegen

Status
Nicht offen für weitere Antworten.

Miriam84

Mitglied
hallo,

wie ich möchte gern das in meinem workspace beim programmablauf bei auswahl einer bestimmten funktion ein Ordner und eine Datei angelegt wird. Allerdings soll beides nur einmal angelegt werden.

Dazu hätte ich 2 Fragen.

1.wie komme ich an mein Workspacepfa.

2. wie kann ich dort einen Ordner und eine Datei anlegen. Dies soll aber Plattformunabhängig sein, also sowohl unter Unix als auch unter Windows funktionieren.
 
1.wie komme ich an mein Workspacepfa.

Java:
ResourcesPlugin.getWorkspace().getRoot()
					.getLocation();

Damit sollte das klappen.


2. wie kann ich dort einen Ordner und eine Datei anlegen. Dies soll aber Plattformunabhängig sein, also sowohl unter Unix als auch unter Windows funktionieren.

Hm, ich bin mir nicht sicher, aber theoretisch sollte das doch so klappen:

Java:
String workspacePath = ResourcesPlugin.getWorkspace().getRoot()
					.getLocation().toString();

			File tmpFile = new File(workspacePath
					+ "/test/test.file"); 
			
			if (!tmpFile.exists()){
				tmpFile.getParentFile().mkdirs();
				tmpFile.createNewFile();
			}
 
In Eclipse 3.5 sollte man wohl eher folgendes benutzen.
Desweiteren war der Vorschlag nicht plattformunabhängig, da Linux einen Slash, Windows aber einen Backslash benutzt (z.B.)

Java:
  String workspacePath = Platform.getLocation().toOSString(); //Erzeugt den Pfad abhängig vom genutzten System
  String filePath = workspacePath + File.pathSeparator + "ordner" + File.pathSeparator + "file.name";
  //File.pathSeperator ist der Seperator, der für das genutzte System gilt.
  File file = new File(filePath);
  if (!file.exists()) {
	  file.getParentFile().mkdirs();
	  try { 
             //Try {..} catch {...} nötig bei createNewFile()
		file.createNewFile();
	  } catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	  }
  }
 
Ja, das stimmt, daran habe ich nicht gedacht.

Kann man für den OS-spezifischen "Pfadtrenner" nicht auch folgende Zeile verwenden?

Java:
private static String SEPARATOR = System.getProperty("file.separator");

Den try-catch-Block hab ich im Übrigen weggelassen, weils mir sonst für das kleine Beispiel zu viel gewesen wäre. ^^ War etwas faul. Aber es stimmt natürlich, dass der da hin muss.
 
Der Slash funktioniert auf allen Systemen plattformunabhängig, der backslash nicht.

Nicht ganz.
Soweit ich mich erinnere, hatten Dos-basierte Betriebssysteme ihre Probleme mit den Slash.
Kann mich da aber auch irren.

Wenn man ganz sicher sein möchte und es sauber machen will, sollte jedenfalls ein entsprechender Seperator verwendet werden.
Dazu kann man dann einen unserer Vorschläge nutzen.
Denn Gonzos Vorschlag geht natürlich auch 🙂
 
Soweit ich mich erinnere, hatten Dos-basierte Betriebssysteme ihre Probleme mit den Slash.
Kann mich da aber auch irren.
Du meinst so wie DOS 3.3, Windows 95 und Windows ME? 😉
Seit Windows 2000 gibt es keine DOS basierten OS mehr.
Die irrst dich übrigens, Windows schluckt auch den "normalen" Slash.
 
Ich weiß, das AKTUELLE Windows Versionen einen Slash interpretieren.
Aber:
1. Können das die alten (wie die von dir aufgeführten) Dos-basierten Betriebssysteme nicht
2. Selbst wenn es jedes Betriebssystem könnte, wäre der Slash eben nicht das offizielle Seperator Element.
3. Sollte man auch bei kleinen Projekten auf eine saubere Programmierung achten. Dazu gehört eben auch eine OS spezifische Pfadangabe, selbst wenn jedes OS auch ein Slash "schluckt"

Wer Plattformunabhängig sein will, sollte jedenfalls die von Java angebotenen Möglichkeiten verwenden und nicht darauf hoffen, dass es schon irgendwie überall klappt, weil Windows kanns ja
 
Sry, für DP...

Ich habe übrigens nie gesagt, dass Windows das allgemein nicht könnte. 😉

Man merkt jedenfalls, dass man sich darüber anscheinend gut streiten kann ^.^
 
Wieso streiten? 😉

Falls jemand wirklich ein 9+ Jahre altes OS einsetzt, wird der Slash nicht sein einziges bzw. größtes Problem sein 😉

Jedenfalls kann man seit Jahren mit dem Slash arbeiten, ohne Probleme, sogar unter Windows.
 
Gepflegte Diskussionen sind immer gut und bringen Leben ins Geschäft ^.^

Falls jemand wirklich ein 9+ Jahre altes OS einsetzt, wird der Slash nicht sein einziges bzw. größtes Problem sein
Wobei ich dir recht gebe, aber plattformunabhängig schließt das in meinen Augen ein *nick*

Jedenfalls kann man seit Jahren mit dem Slash arbeiten, ohne Probleme, sogar unter Windows.
Wo ich dir wieder recht gebe, aber ein anderes Beispiel.
Welchen Seperator benutzt Mac denn?
Soweit ich weiß, war das bis vor kurzem noch ein Doppelpunkt... Hab aber nie ein Apple System genutzt (außer auf meinem iphone...), daher kann ich das nicht mit sicherheit sagen...
 
Mac benutzt / und das Betriebssystem wird von einem / sowieso nichts mitbekommen, weil in die VM im Windows Fall als \ interpretiert. Unsauber ist das nicht.
Den OS spezifischen Separator brauchst du erst dann, wenn du dem User Pfade textuell darstellen willst.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben