# Pfad gültig oder ungültig?



## tanzverfuehrung (28. Apr 2011)

in meiner methode die ich implementiere ,muss ich eine IllegalArgumentException abfangen!

sie wird geworfen, wenn der Pfad ungültig ist!
ungültiger Pfad:  a//bc/

gültiger Pfad:  a/b/c

aber wie kann ich prüfen ob der pfad ungültig oder gültig ist???:bahnhof:


----------



## nrg (28. Apr 2011)

ist das eine hausaufgabe oder ein eigenes/kommerzielles projekt? wenns eine hausaufgabe ist, musst du den pfad parsen (dazu dann mehr) wenn nicht, nimm File (Java Platform SE 6). Da spielt es überhaupt keine Rolle, wieviel backslashes/slashed jeweils im pfad vorkommen (wobei backslashes natürlich maskiert werden müssen).


----------



## tanzverfuehrung (28. Apr 2011)

nrg hat gesagt.:


> ist das eine hausaufgabe oder ein eigenes/kommerzielles projekt? wenns eine hausaufgabe ist, musst du den pfad parsen (dazu dann mehr) wenn nicht, nimm File (Java Platform SE 6). Da spielt es überhaupt keine Rolle, wieviel backslashes/slashed jeweils im pfad vorkommen (wobei backslashes natürlich maskiert werden müssen).




es ist keine hausaufgabe aber file ist auch nicht das richtige.
dann lieber bitte mehr zum pfad parsen!


----------



## tanzverfuehrung (28. Apr 2011)

oder muss ich mir eine  eigene methode schreiben
isValidPath()?


----------



## faetzminator (28. Apr 2011)

Wie definierst du einen gültigen Pfad? Z.B. [c]a//bc/[/c] würde ich als [c]a/bc/[/c] interpretieren. Und wenn du noch [c].[/c] (aktuelles Verzeichnis) und [c]..[/c] (Parent) kennst, dann wär auch [c]a/../././././a/b[/c] gültig?


----------



## VfL_Freak (28. Apr 2011)

Moin,

wie wäre es mit *exists* ?


```
File fDir = new File( strMeinPfad);
if ( !fDir.exists() ) 
{
    // ...
}
```

Gruß
Klaus


----------



## faetzminator (28. Apr 2011)

@VfL_Freak:
Schau dir die vorherigen Posts des TO an. Da gehts AFAIK nicht um Filepaths...


----------



## tanzverfuehrung (28. Apr 2011)

faetzminator hat gesagt.:


> Wie definierst du einen gültigen Pfad? Z.B. [c]a//bc/[/c] würde ich als [c]a/bc/[/c] interpretieren. Und wenn du noch [c].[/c] (aktuelles Verzeichnis) und [c]..[/c] (Parent) kennst, dann wär auch [c]a/../././././a/b[/c] gültig?



nodeExists
public abstract boolean nodeExists(String pathName)
                            throws BackingStoreExceptionReturns true if the named preference node exists in the same tree as this node. Relative path names (which do not begin with the slash character ('/')) are interpreted relative to this preference node. 
If this node (or an ancestor) has already been removed with the removeNode() method, it is legal to invoke this method, but only with the path name ""; the invocation will return false. Thus, the idiom p.nodeExists("") may be used to test whether p has been removed. 


Parameters:
pathName - the path name of the node whose existence is to be checked. 
Returns:
true if the specified node exists. 
Throws: 
BackingStoreException - if this operation cannot be completed due to a failure in the backing store, or inability to communicate with it. 
IllegalArgumentException - if the path name is invalid (i.e., it contains multiple consecutive slash characters, or ends with a slash character and is more than one character long). NullPointerException - if path name is null. s * @throws IllegalStateException if this node (or an ancestor) has been removed with the removeNode() method and pathName is not the empty string ("").

--------------------------------------------------------------------------------


----------



## VfL_Freak (28. Apr 2011)

Moin,



faetzminator hat gesagt.:


> @VfL_Freak:
> Schau dir die vorherigen Posts des TO an. Da gehts AFAIK nicht um Filepaths...



oops ... Du hast wohl recht ... :autsch:

Ja, ich bin sowas von Urlaubsreif  
Gut das es Sonntag los geht 

Gruß
Klaus


----------



## faetzminator (28. Apr 2011)

Wieso willst du selbst eine Validierung bauen, wenn dir diese Methode eine Exception wirft  ?


----------



## tanzverfuehrung (28. Apr 2011)

faetzminator hat gesagt.:


> Wieso willst du selbst eine Validierung bauen, wenn dir diese Methode eine Exception wirft  ?



ich will ja nur erfragen ob es ungültiger pfad ist,dann werfe exception


----------



## faetzminator (28. Apr 2011)

Aber gemäss deinem ersten Post kriegst du eine Exception, wenn das Format nicht stimmt. Jetzt sagst du, du willst sie werfen. Was nun?


----------



## tanzverfuehrung (28. Apr 2011)

faetzminator hat gesagt.:


> Aber gemäss deinem ersten Post kriegst du eine Exception, wenn das Format nicht stimmt. Jetzt sagst du, du willst sie werfen. Was nun?



was genau ist der unterschied?:bahnhof:


----------



## faetzminator (28. Apr 2011)

Im einen Fall wird sie von einer Methode geworfen und du musst sie fangen und/oder weiterwerfen. Im anderen Fall wirfst du selbst eine.


----------



## tanzverfuehrung (28. Apr 2011)

faetzminator hat gesagt.:


> Im einen Fall wird sie von einer Methode geworfen und du musst sie fangen und/oder weiterwerfen. Im anderen Fall wirfst du selbst eine.




die methode sagt ja das eine exception geworfen werden muss, wenn der pfad ungültig ist!

habe jetzt die methode 	

```
public boolean isValidPath(String pathnName){
		
		if(pathnName.endsWith("/")){
			return false;
		}
		if(pathnName.contentEquals("//")){
			return false;
		}
		return true;		
	}
```
geschrieben

abér die zweite abfrage geht noch nicht!
wie kann ich einen string fragen ob er diesen string enthält!egal wo!


----------



## maki (28. Apr 2011)

mit indexOf zB.


----------



## tanzverfuehrung (28. Apr 2011)

ok dann ist meine methode dann diese...um zu gucken ob der Pfad gültig ist oder nicht
wenn er gültig ist dann kommt true raus
wenn er ungültig ist false!

```
public boolean isValidPath(String pathnName){
		
		if(pathnName.endsWith("/")){
			return false;
		}
		int index =pathnName.indexOf("//");
		if(index > -1){
			return false;
		}
		return true;		
	}
```

und die exception muss ich jetzt in diese methode einbauen


```
@Override
	public boolean nodeExists(String pathName) throws IllegalArgumentException {

		
		if(isValidPath(pathName) == true)
			try{				
		if (pathName.isEmpty()) {
			return false;
		}

		int index = pathName.indexOf("/");

		if (index == 0) { // absoluter Pfad

			// zum relativen pfad machen zur weiter verarbeitung
			pathName = pathName.substring(index + 1);
		}

		SimplePreferences value = nodeMap.get(pathName);
		if (value != null)
			return true;

		index = pathName.indexOf("/");

		if (index < 0) { // Wenn der index < 0 ist wurde kein Slash mehr
							// gefunden, dann ist es der letzte Knoten
			value = nodeMap.get(pathName); // prüfen ob knoten
			// vorhanden ist
			if (value != null)
				return true;
			return false;
		}
		String[] split = pathName.split("/");
		for (int i = 0; i < split.length; i++) {
			value = nodeMap.get(split[i]); // prüfen ob knoten
			// vorhanden ist
			if (value != null)
				return true;
		}
		return false;
		
		}catch (IllegalArgumentException e) {
			// TODO: handle exception
			e.getMessage();		
		}	return false;
	}
```


kann mir da jemand helfen.hatte noch nicht viel mit exception zu tun!:rtfm:

so wie ich es jetzt hab,habe ich es verstanden durchs belesen!:rtfm::rtfm:

if(isValidPath(pathName) == true)
			try{....}
catch (IllegalArgumentException e) {
			// TODO: handle exception
			e.getMessage();


----------



## Crian (28. Apr 2011)

tanzverfuehrung hat gesagt.:


> wie kann ich einen string fragen ob er diesen string enthält!egal wo!



Mit 
	
	
	
	





```
if (string.contents(substring))
```
.


----------

