Java BufferedInputStream Copy copyFileUnique(File in, File outDir)

Here you can find the source of copyFileUnique(File in, File outDir)

Description

Write file with an unique name.

License

Open Source License

Declaration

static public File copyFileUnique(File in, File outDir) 

Method Source Code

//package com.java2s;
/*//  www .ja v a 2  s .com
 * photo-manager is a program to manage and organize your photos; Copyright (C) 2010 Dietrich Hentschel
 *
 * This program is free software; you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation;
 * either version 2 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program;
 * if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

import java.io.*;

public class Main {
    /**
     * Write file with an unique name.
     *
     */
    static public File copyFileUnique(File in, File outDir) {
        if (in.isFile() == false || outDir.isDirectory() == false) {
            return null;
        }

        // make outFile
        int n = 0;
        String name = getWithoutExtension(in.getName());
        String ext = getExtension(in.getName());
        File out = new File(outDir.getPath() + File.separator
                + in.getName());
        while (out.isFile()) {
            n++;
            out = new File(outDir.getPath() + File.separator + name + "_"
                    + n + "." + ext);
        }
        if (copyFile(in, out)) {
            return out;
        }
        return null;
    }

    public static String getWithoutExtension(String name) {

        int i = name.lastIndexOf('.');

        if (i > 0 && i < name.length() - 1) {
            return name.substring(0, i);
        }
        return name;
    }

    public static String getExtension(File f) {
        String ext = "";
        String s = f.getName();
        int i = s.lastIndexOf('.');

        if (i > 0 && i < s.length() - 1) {
            ext = s.substring(i + 1);
        }
        return ext;
    }

    public static String getExtension(String s) {
        String ext = "";
        // String s = f.getName();
        int i = s.lastIndexOf('.');

        if (i > 0 && i < s.length() - 1) {
            ext = s.substring(i + 1);
        }
        return ext;
    }

    static public boolean copyFile(File in, File out) {

        BufferedInputStream bufin = null;
        BufferedOutputStream bufout = null;

        try {
            FileInputStream fis = new FileInputStream(in);
            bufin = new BufferedInputStream(fis);

            out.delete();
            FileOutputStream fos = new FileOutputStream(out);
            bufout = new BufferedOutputStream(fos);

            byte[] buffer = new byte[1024];
            int len;
            while (bufin.available() != 0) {
                len = bufin.read(buffer);
                bufout.write(buffer, 0, len);
            }
            ;
        } // try
        catch (FileNotFoundException fnfe) {
            // System.out.println(in.getPath() + " does not exist!");
        } catch (IOException ioe) {
            // System.out.println("Error reading/writing files!");
        } finally {
            try {
                if (bufin != null)
                    bufin.close();
                if (bufout != null)
                    bufout.close();
            } catch (IOException ioe) {
            }
        }

        return true;
    }
}

Related

  1. copyFileNormal(File copyFrom, File copyTo)
  2. copyFileToFile(File in, File out)
  3. copyFileToStream(File from, OutputStream out)
  4. copyFileToStream(File input, OutputStream os)
  5. copyFileToTemp(InputStream is, String dirName, String fileName)