Добавление «Копировать» перед расширением имени файла при копировании файлов - PullRequest
3 голосов
/ 22 марта 2012

Допустим, имя исходного файла Foo.txt. Я хочу, чтобы имя файла назначения было Foo(Copy).txt. И я хочу, чтобы исходный файл был сохранен. Как мне добиться этого?

/*
 * Returns a copy of the specified source file
 * 
 * @param sourceFile the specified source file
 * @throws IOException if unable to copy the specified source file
 */
public static final File copyFile(final File sourceFile) throws IOException 
{
    // Construct the destination file
    final File destinationFile = .. // TODO: Create copy file
    if(!destinationFile.exists()) 
    {
        destinationFile.createNewFile();
    }

    // Copy the content of the source file into the destination file
    FileChannel source = null;
    FileChannel destination = null;
    try 
    {
        source = new FileInputStream(sourceFile).getChannel();
        destination = new FileOutputStream(destinationFile).getChannel();
        destination.transferFrom(source, 0, source.size());
    }
    finally 
    {
        if(source != null) 
        {
            source.close();
        }
        if(destination != null) 
        {
            destination.close();
        }
    }

    return destinationFile;
}

Ответы [ 2 ]

4 голосов
/ 22 марта 2012

Вот как бы я это сделал:

String name = sourceFile.getName();
int i = name.contains(".") ? name.lastIndexOf('.') : name.length();
String dstName = name.substring(0, i) + "(Copy)" + name.substring(i);
File dest = new File(sourceFile.getParent(), dstName);
0 голосов
/ 22 марта 2012

В библиотеке Google Guava есть удобный метод Files.copy (Файл, Файл) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...