1) кто-то предложил найти индекс «.» и добавление «-norm», чтобы выходным файлом было любое имя, введенное пользователем с присоединенной «-norm», но перед «.».
То есть вы не уверены, какой лучший способ получить от colors.txt
до colors-norm.txt
или от foo.txt
до foo-norm.txt
?
Один из вариантов - найти индекс (последней) точки в имени файла и разделить имя файла в этой точке и использовать части для создания нового имени файла:
String filename = "colors.txt"
int indexOfDot = filename.lastIndexOf(".");
String firstPart = filename.substring(0, indexOfDot); // Will be "colors"
String lastPart = filename.substring(indexOfDot); // Will be ".txt"
return firstPart + "-norm" + lastPart;
Более элегантный вариант - использовать регулярное выражение:
String filename = "colors.txt"
Matcher filenameMatcher = Pattern.compile("(.*)\\.txt").matcher(filename);
if (matcher.matches()) {
String firstPart = matcher.group(1) // Will be "colors"
return firstPart + "-norm.txt"
} else {
//Invalid input, throw an Exeption and/or show an error message
}
Если разрешены другие расширения файла, отличные от .txt
, вам также потребуется зафиксировать расширение.
2) Я хочу проверить текстовый файл, чтобы убедиться, что он вводит правильный файл. Нужно ли проверять каждую отдельную часть? или вся строка?
Самый простой способ - сначала отделить различные значения цвета, а затем проверить каждое значение цвета. Возможно, вы захотите сначала разработать грамматику, поэтому написание реального кода будет проще.
Поскольку в строке есть только одно значение, вы можете использовать что-то вроде этого:
List<String> outputColors = Files.lines(new File(fileName).toPath())
.filter(line -> isValidColor(line))
.map(validColor -> convertToOutputFormat(validColor))
.collect(Collectors.toList());
Files.write(new File(outputFileName).toPath(), outputColors);
3) запись в файл - огромная проблема, я смог прочитать в файле.
Google - ваш друг:
4) выходной файл может содержать только допустимые входные данные.
После того, как вы решили 2) правильно, это не должно быть большой проблемой