0

如何使用数字创建新文件(如果创建新文件,则增加)。现在我有一个名为“29-03-2013.pdf”的文件。如果再次创建,我想创建一个名为“29-03-2013(1).pdf”的新文件,依此类推。

我的代码:

String finalResponse="";
String pdfnameDate=selectedFromDate+"_"+selectedToDate;

Document doc = new Document(PageSize.A4.rotate(), 50, 10, 10, 10);


try {
    File alertsFiledir = new File(Environment.getExternalStorageDirectory(), "/RAMAPP/ALERTS");
    if (!alertsFiledir.exists()) {
        if (!alertsFiledir.mkdirs()) {
            finalResponse="failed";
            Log.i("alertsavepdf","directory not created");
            return finalResponse;
        }
    }
    File alertsFile = new File(alertsFiledir,pdfnameDate+".pdf");

    if (!alertsFile.exists()) {
        try {
            boolean fileExist = alertsFile.createNewFile();
            if(!fileExist)
            {
                finalResponse="failed";
                return finalResponse;
            }
        } catch (IOException e) {
            e.printStackTrace();
            finalResponse="failed";
            return finalResponse;
        }
    }
    else
    {
        **//here how to Create a new File like pdfnameDate(1) or pdfnameDate(2).Here pdfnameDate is exist file name**

    }
    PdfWriter.getInstance(doc, new FileOutputStream(alertsFile));
    doc.open();
    Log.i("alertsavepdf","pdf file created");
} catch (FileNotFoundException e) {
    e.printStackTrace();
    finalResponse="failed";
    Log.i("alertsavepdf","savepdf error->"+e.toString());
    return finalResponse;
} catch (DocumentException e) {
    e.printStackTrace();
    finalResponse="failed";
    Log.i("alertsavepdf","savepdf error->"+e.toString());
    return finalResponse;
}
4

2 回答 2

1

一个循环在这里看起来很完美:

int count = 0;
do {
    count++;
    alertsFile = new File(alertsFiledir,pdfnameDate + "(" + count + ").pdf");
} while(alertFile.exists()); 
// Make the file

+(如果您痴迷于速度,则StringBuilder 将比将 String 与 连接稍快。)

于 2013-03-29T15:08:03.280 回答
0

它写得很快,并没有检查是否一切正常。它显示了这个想法。您可以使用一种正则表达式模式对其进行优化,甚至可以不使用正则表达式进行优化。

void method() {
// ... your code
    if (file.exists()) {
        final int number = getFileNumber(file);
        file = new File(getFilePathWithoutExtAndNumber(file) + "(" + (number + 1) + ")" + getFileExt(file));
    }
}

private int getFileNumber(File file) {
    final Pattern p = Pattern.compile(".*\\((\\d+)\\)\\..*$");
    final Matcher m = p.matcher(file.getName);

    if (!m.matches()) {
        return 0;
    }
    return Integer.parseInt(m.group(1));
}


private String getFilePathWithoutExtAndNumber(File file) {
    final Pattern p = Pattern.compile("(.*)\\((\\d+)\\)\\..*$");
    final Matcher m = p.matcher(file.getName);

    if(!m.matches()) {
        getFilePathWidthoutExt(file);
    }

    return m.group(1)

}

private String getFilePathWidthoutExt(File file) {
    //not in scope of this question
}

private String getFileExt(File file) {
    // not in scope of this question
}
于 2013-03-29T15:12:54.033 回答