public string[] ListFiles()
{
const string springIgnoreFileName = "springignore.txt";
const char springIgnoreComment = '#';
var rawFileList = RawListFiles();
if (!rawFileList.Any(file => file == springIgnoreFileName)) return RawListFiles();
var ignoreLines = ExtractTextFile(springIgnoreFileName).Replace("\r\n", "\n").Split('\n').ToArray();
for (var i = 0; i < ignoreLines.Length; i++) {
var pos = ignoreLines[i].IndexOf(springIgnoreComment);
if (pos == -1) continue;
ignoreLines[i] = ignoreLines[i].Substring(pos + 1);
}
ignoreLines = ignoreLines.Where(l => !String.IsNullOrEmpty(l)).ToArray();
return RawListFiles().Where(file => !ignoreLines.Any(pattern => Regex.IsMatch(file, pattern))).ToArray();
}