@Override
	public EntityInfo getFileMetaData(String path) throws PathNotFoundException {
		if (path.contains(hiddenPrefix))
			throw new PathNotFoundException(path);

		if (hardlinks)
		{
			//Get hard link paths
			String[] hardlinks = getHardLinks(path);
			if (hardlinks.length > 0)
			{
				EntityInfo info = innerFs.getFileMetaData(hardlinks[0]);
				FileInfo fileInfo = (FileInfo)info;
				FileInfo target = new FileInfo(path, fileInfo.getFileSize());
				target.setCreationTime(fileInfo.getCreationTime());
				target.setLastAccessTime(fileInfo.getLastAccessTime());
				target.setLastModificationTime(fileInfo.getLastModificationTime());
				return target;
			}
		}
		if (symlinks)
		{
			if (attributeFs.pathExists(getSymLinkPath(path)))
			{
				String dest = "";
				try {
					dest = FileSystemUtils.readWholeText(attributeFs, getSymLinkPath(path));
				} catch (PathNotFoundException e) {
					e.printStackTrace();
				} catch (AccessDeniedException e) {
					e.printStackTrace();
				} catch (NotAFileException e) {
					e.printStackTrace();
				}
				return new SymbolicLinkInfo(path, dest);
			}
		}
		return innerFs.getFileMetaData(path);
	}