fitgoodies-core/src/main/java/de/cologneintelligence/fitgoodies/file/FileSystemDirectoryHelper.java
public File rel2abs(final String basePath, final String relPath) {
		String[] baseParts = getParts(basePath);
		String[] relParts = getParts(relPath);

		if (isAbsolutePath(relPath)) {
			return new File(relPath);
		}

		List<String> parts = new ArrayList<>();
		for (int i = 0; i < baseParts.length; ++i) {
			if (i > 0 || !isWindowsDrive(basePath)) {
				parts.add(baseParts[i]);
			}
		}

		for (String part : relParts) {
			if (part.equals("..") && parts.size() > 0) {
				parts.remove(parts.size() - 1);
			} else if (!part.equals(".") && !part.equals("..")) {
				parts.add(part);
			}
		}

		StringBuilder result = new StringBuilder();
		if (isWindowsDrive(basePath)) {
			result.append(baseParts[0]);
		}

		for (String part : parts) {
			result.append(File.separator);
			result.append(part);
		}

		return new File(result.toString());
	}
public File rel2abs(final String basePath, final String relPath) {
		String[] baseParts = getParts(basePath);
		String[] relParts = getParts(relPath);

		if (isAbsolutePath(relPath)) {
			return new File(relPath);
		}

		List<String> parts = new ArrayList<>();
		for (int i = 0; i < baseParts.length; ++i) {
			if (i > 0 || !isWindowsDrive(basePath)) {
				parts.add(baseParts[i]);
			}
		}

		for (String part : relParts) {
			if (part.equals("..") && parts.size() > 0) {
				parts.remove(parts.size() - 1);
			} else if (!part.equals(".") && !part.equals("..")) {
				parts.add(part);
			}
		}

		StringBuilder result = new StringBuilder();
		if (isWindowsDrive(basePath)) {
			result.append(baseParts[0]);
		}

		for (String part : parts) {
			result.append(File.separator);
			result.append(part);
		}

		return new File(result.toString());
	}
public File rel2abs ( final String basePath , final String relPath ) { String [ ] baseParts = getParts ( basePath ) ; String [ ] relParts = getParts ( relPath ) ; if ( isAbsolutePath ( relPath ) ) { return new File ( relPath ) ; } List < String > parts = new ArrayList <> ( ) ; for ( int i = 0 ; i < baseParts . length ; ++ i ) { if ( i > 0 || ! isWindowsDrive ( basePath ) ) { parts . add ( baseParts [ i ] ) ; } } for ( String part : relParts ) { if ( part . equals ( ".." ) && parts . size ( ) > 0 ) { parts . remove ( parts . size ( ) - 1 ) ; } else if ( ! part . equals ( "." ) && ! part . equals ( ".." ) ) { parts . add ( part ) ; } } StringBuilder result = new StringBuilder ( ) ; if ( isWindowsDrive ( basePath ) ) { result . append ( baseParts [ 0 ] ) ; } for ( String part : parts ) { result . append ( File . separator ) ; result . append ( part ) ; } return new File ( result . toString ( ) ) ; }
Converts an relative path into an absolute one.

@param basePath path to start from
@param relPath  path to convert
@return {@code relPath} as a absolute path
Converts an relative path into an absolute one .