在我的应用程序中,我使用一个按钮启动Camera应用程序并将图片保存到sdCard上按特定文件夹命名的当前日期和时间。当我对图片的名称进行硬编码时,它可以正常工作,但是如果我试图在名称中输入日期则根本不起作用。
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), Constants.IMAGE_FOLDER_URI);
imagesFolder.mkdirs();
Date d = new Date();
CharSequence s = DateFormat.format("MM-dd-yy hh:mm:ss", d.getTime());
File image = new File(imagesFolder, s.toString() + ".jpg"); //this line doesn't work
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
startActivity(imageIntent);
如果我把:
s = "some_name";
然后它可以工作,但我需要图像名称中的当前日期和时间。
答案 0 :(得分:10)
冒号:
不是文件名中的有效字符,这就是无法创建此类文件的原因。
尝试将您的名称模式更改为以下内容:
CharSequence s = DateFormat.format("MM-dd-yy hh-mm-ss", d.getTime());
答案 1 :(得分:4)
输入此代码并尝试:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HH_mm_ss");
String currentTimeStamp = dateFormat.format(new Date());
答案 2 :(得分:1)
这是另一种解决方案:
File cameraFolder;
if (android.os.Environment.getExternalStorageState().equals
(android.os.Environment.MEDIA_MOUNTED))
cameraFolder = new File(android.os.Environment.getExternalStorageDirectory(),
"YOUR_FOLDER_NAME/");
else
cameraFolder= StatusUpdate.this.getCacheDir();
if(!cameraFolder.exists())
cameraFolder.mkdirs();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
String timeStamp = dateFormat.format(new Date());
String imageFileName = "picture_" + timeStamp + ".jpg";
File photo = new File(Environment.getExternalStorageDirectory(),
"YOUR_FOLDER_NAME/" + imageFileName);
如果您只想将TimeStamp作为图片名称,则可以从"picture_" +
中删除String imageFileName
。
答案 3 :(得分:0)
使用此
File image = new File(imagesFolder, s+ "Rj.jpg");