【发布时间】:2013-05-19 11:54:13
【问题描述】:
我的逻辑似乎不正确,如果说“photo.jpg”和“photo1.jpg”存在,我正试图将文件重命名为“photo2.jpg”,等等。
在我运行代码并拍照的那一刻,只有“photo.jpg”和“photo1.jpg”存在,然后如果拍摄第三张和第四张等照片,它们就会被覆盖.
String photoName = "photo.jpg";
String i = "0";
int num = 0;
File photo = new File(Environment.getExternalStorageDirectory(), photoName);
//for (File file : photo.listFiles()){
while(photo.exists()) {
//if(file.getName().equals("photo.jpg")){
//photo.delete();
num = Integer.parseInt(i);
++num;
String concatenatedNum = Integer.toString(num);
StringBuffer insertNum = new StringBuffer(photoName);
insertNum.insert(5, concatenatedNum);
photoName = insertNum.toString();
photo.renameTo(new File(Environment.getExternalStorageDirectory(), photoName));
//}
}
try {
FileOutputStream fos=new FileOutputStream(photo.getPath());
//MediaStore.Images.Media.insertImage(getContentResolver(), yourBitmap, yourTitle, yourDescription);
//write jpeg to local drive
fos.write(jpeg[0]);
fos.close();
}
catch (java.io.IOException e) {}
感谢您的宝贵时间和帮助!
编辑:解决了一半:我意识到我正在覆盖文件而不是创建新文件。现在我可以拍摄多张照片,并将它们保存为自己的文件。但是,文件的命名现在是:
- 照片.jpg
- photo1.jpg
- photo11.jpg
- photo111.jpg 等
【问题讨论】:
-
保留原始字符串值
photo。始终将您的号码附加到该号码。您正在使用各种 StringBuffers 和单独的连接步骤。只需使用+使其更具可读性。 -
您好@SotiriosDelimanolis,非常感谢您的回复。您能否提供一个代码示例来说明您的意思?干杯。
-
String p = "photo"; p = p + 1 + ".jpg";将1替换为您的计数器。 -
您在代码中所做的是插入数字而不是替换它。在位置 5,您告诉它添加一个新字符,在本例中为 1,所以它是“photo1”,然后是“photo11”,依此类推。
-
感谢各位的回复。嘿@mrres1,谢谢你的回答。我现在确实看到了问题!我将如何更换号码?干杯。