Итак, у меня есть исходный набор файлов:
file1.txt
file2.txt
Когда я вношу изменения в эти файлы и сохраняю их, я добавляю к ним отметку времени, чтобы они стали:
fileN_DD-Mon-YYYY_HHMMSS.txt
Но если бы я сделал какие-либо дополнительные сохранения, отметки времени начали бы складываться:
fileN_DD-Mon-YYYY_HHMMSS_DD-Mon-YYYY_HHMMSS.txt
Мне нужен способ получить подстроку, которая встречается до первого появления любого "." или "_", чтобы получить строку, которая находится перед ними (т.е. фактическое имя файла ("fileN")).
Я дошел до этого с помощью
int lastDot = fileName.getName().lastIndexOf('.');
String renamed = fileName.getName().substring(0,lastDot) + getDateTime() + fileName.getName().substring(lastDot);
I ' Я пробовал использовать Scanner :: useDelimiter, чтобы получить первое появление символа "." или "_" с использованием регулярных выражений, но безуспешно.
String renamed = savedFileName(fileName)
public static String savedFileName(String fileName) {
final String TXT = ".txt";
Scanner s = new Scanner(fileName);
s.useDelimiter(<regex>);
String trueFileName = s.next();
s.close();
return trueFileName + getDateTime() + TXT;
для регулярного выражения, я пробовал "\\W"
, но это возвращает только последнюю временную метку:
_DD-Mon-YYYY_HHMMSS.txt
и ".|_"
, но это возвращает это чудовище:
fileN.txt_DD-Mon-YYYY.txt_(more timestamps).txt.