Java 屏幕截图另存为自动生成的文件名
我做了一个按钮来拍摄截图并保存到图片文件夹中。我将它设置为以capture.jpeg的名称保存,但我希望它像这样保存为cafe001.jpeg、cafe002.jpeg。另外,请告诉我如何将其保存为time format.jpeg? 提前谢谢你的帮助Java 屏幕截图另存为自动生成的文件名,java,filenames,Java,Filenames,我做了一个按钮来拍摄截图并保存到图片文件夹中。我将它设置为以capture.jpeg的名称保存,但我希望它像这样保存为cafe001.jpeg、cafe002.jpeg。另外,请告诉我如何将其保存为time format.jpeg? 提前谢谢你的帮助 container = (LinearLayout) findViewById(R.id.LinearLayout1); Button captureButton = (Button) findViewById(R.id.captu
container = (LinearLayout) findViewById(R.id.LinearLayout1);
Button captureButton = (Button) findViewById(R.id.captureButton);
captureButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
container.buildDrawingCache();
Bitmap captureView = container.getDrawingCache();
FileOutputStream fos;
try {
fos = new FileOutputStream(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() + "capture.jpeg");
captureView.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext(),
"Captured under Pictures drectory", Toast.LENGTH_LONG)
.show();
}
});
要另存为另一个名称,只需更改字符串“capture.jpeg” 如果希望将其命名为cafeXXX.jpeg(其中XXX是一个数字),则可以执行类似操作(如果删除文件,此方法可能会导致数字重叠): 如果您想要一个时间格式,只需根据需要更改格式字符串即可(因为只有“到一天”意味着您每天只能获得时间格式)
你基本上有两个选择 你可以。。。 列出目录中的所有文件,简单地将文件计数增加1,然后使用
File[] files = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString()).
listFiles(new FileFilter() {
public boolean accept(File pathname) {
String name = pathname.getName();
return pathname.isFile() && name.toLowerCase().startsWith("capture") && name.toLowerCase().endsWith(".jpeg");
}
});
int fileCount = files.length();
fos = new FileOutputStream(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() +
"capture" + fileCount + ".jpeg");
当然,这并不考虑是否存在具有相同索引的文件
你可以。。。
列出所有的文件,对它们进行排序,抓取最后一个,找到它的索引值并增加
类似于
File[] files = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString()).
listFiles(new FileFilter() {
public boolean accept(File pathname) {
String name = pathname.getName();
return pathname.isFile() && name.toLowerCase().startsWith("capture") && name.toLowerCase().endsWith(".jpeg");
}
});
Arrays.sort(files);
File last = files[files.length - 1];
Pattern pattern = Pattern.compile("[0-9]+");
Matcher matcher = pattern.matcher(last.getName());
int index = 1;
if (matcher.find()) {
String match = matcher.group();
index = Integer.parseInt(match) + 1;
}
String fileName = "capture" + index + ".jpeg"
你可以。。。
只需创建一个循环和一个循环,直到找到一个空的索引位置…例如,请参见
File[] files = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString()).
listFiles(new FileFilter() {
public boolean accept(File pathname) {
String name = pathname.getName();
return pathname.isFile() && name.toLowerCase().startsWith("capture") && name.toLowerCase().endsWith(".jpeg");
}
});
int fileCount = files.length();
fos = new FileOutputStream(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() +
"capture" + fileCount + ".jpeg");
File[] files = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString()).
listFiles(new FileFilter() {
public boolean accept(File pathname) {
String name = pathname.getName();
return pathname.isFile() && name.toLowerCase().startsWith("capture") && name.toLowerCase().endsWith(".jpeg");
}
});
Arrays.sort(files);
File last = files[files.length - 1];
Pattern pattern = Pattern.compile("[0-9]+");
Matcher matcher = pattern.matcher(last.getName());
int index = 1;
if (matcher.find()) {
String match = matcher.group();
index = Integer.parseInt(match) + 1;
}
String fileName = "capture" + index + ".jpeg"