@Override
	public FileHandle openFile(String path, boolean read, boolean write)
			throws PathNotFoundException, AccessDeniedException,
			NotAFileException {
		
		if (path.contains(hiddenPrefix))
			throw new AccessDeniedException();
		
		if (hardlinks)
		{
			//Get hard link paths
			String[] hardlinks = getHardLinks(path);
			if (hardlinks.length > 0)
			{
				FileHandle handle = innerFs.openFile(hardlinks[0], read, write);
				RedirectedFileHandle dummyHandle = new RedirectedFileHandle(path, handle);
				return dummyHandle;
			}
		}
		if (symlinks)
		{
			if (attributeFs.pathExists(getSymLinkPath(path)))
				throw new NotAFileException();
		}

		
		FileHandle handle = innerFs.openFile(path, read, write);
		return handle;
	}