#java #filesystems
#java #файловые системы
Вопрос:
Мне нужно добавить добавочный номер к файлу, существовавшему ранее, я знаю, как это проверить и как добавить номер в конце, но мне нужна идея, как вводить номер каждый раз
посмотрите это, например, чтобы понять меня C:MyFilesFile.pdf существует, так что попробуйте C:MyFilesFile1.pdf и в следующий раз C:MyFilesFile2.pdf
не знаю, как получить последнее приращение
и, пожалуйста, посмотрите мой код, который я могу увеличить только один раз
int indexOfDot = fName.indexOf(".");
//if theres a dot, start one character before it, otherwise,
//start at the end of the string
int startIndex = indexOfDot > -1 ? indexOfDot - 1 : fName.length() - 1;
if(indexOfDot > -1)
fileNameSuffix = fName.substring(indexOfDot, fName.length());
//search backward on the name to see if it already
//has a number and count the digits
StringBuffer digits = new StringBuffer();
char character = 0;
for (int i = startIndex; i >= 0; i--)
{
character = fName.charAt(i);
if (Character.isDigit(character))
{
digits.append(character);
}
}
if (digits.length() > 0)
{
//There where already digits in the filename.
//Create a number from the digits and add 1
Integer newNumber =new Integer(Integer.parseInt(digits.toString()) 1);
//Then append that to the actual filename
String actualFileName = fName.substring(0, startIndex 1 - digits.length());
rtnNewFileName = actualFileName newNumber.toString() fileNameSuffix;
}else
{
//There where no digits in the filename
//Append 1 to the actual filename
String actualFileName = fName.substring(0, startIndex - digits.length());
rtnNewFileName = actualFileName "1" fileNameSuffix;
}
file.setFileName(rtnNewFileName);
out.println("<li>File Uploaded <br/>Form field : uploadfile" "<BR> Uploaded file : " file.getFileName() " (" file.getFileSize() " bytes)" "<BR> Content Type : " file.getContentType());
//Uses the bean now to store specified by jsp:setProperty at the top.
upBean.store(mrequest, "uploadfile");
Ответ №1:
вам нужно передать File2.pdf методу во второй раз или проверить, существует ли сгенерированное имя файла, а затем повторить с методом с новым именем файла
кстати, я бы использовал регулярное выражение для этого:
Pattern p = Pattern.compile("(.*?)(\d )?(\..*)?");
do{
Matcher m = p.matcher(fName);
if(m.matches()){//group 1 is the prefix, group 2 is the number, group 3 is the suffix
fName = m.group(1) (m.group(2)==null?1:(Integer.parseInt(m.group(2)) 1)) (m.group(3)==null?"":m.group(3));
}
}while(new File(fName).exists());//repeat until a new filename is generated
Ответ №2:
Если вы хотите сохранить первое имя файла без числового суффикса, у меня это сработало (на основе ответа Раше)
Pattern p = Pattern.compile("(.*?)(\d )?(\..*)?");
while(new File(pathname).exists()){
Matcher m = p.matcher(pathname);
if(m.matches()){//group 1 is the prefix, group 2 is the number, group 3 is the suffix
pathname = m.group(1) (m.group(2)==null?1:(Integer.parseInt(m.group(2)) 1)) (m.group(3)==null?"":m.group(3));
}
}
Ответ №3:
привет всем, я нахожу ответ, который вам нужно просто добавить (C0Py0) перед каждой новой загрузкой файла после этого, проверить, существует ли ваш файл, чем вызывать метод changing();
<%! Обратный перевод строки (String source) { int i, len = source.length(); StringBuffer dest = новый StringBuffer(len);
for (i = (len - 1); i >= 0; i--)
dest.append(source.charAt(i));
return dest.toString();
}
%> <%! Изменение строки (String ffName){ String newName,ext,finalName; String invName,increment; String copyf=null; String test; int i=0; int j = 0; int incr; int k = j 4;
newName=ffName.substring(0,ffName.length()-4); ext = ffName.substring(ffName.length()-3,ffName.length());
invName=reverseIt(newName);
while(k != invName.length()){
if( invName.substring(j,k).equals("yP0C")){
copyf=invName.substring(0,j);
k=invName.length()-1;
}
else{
j ;
k ;
}
}
increment=reverseIt(copyf);
//System.out.println(increment);
incr=Integer.parseInt(increment);
incr =1;
newName=newName.substring(0,newName.length()-(j-1));
increment=String.valueOf(incr);
finalName=newName increment "." ext;
возвращает конечное имя;
}
%>
я бы хотел, чтобы это помогло другим