SimpleDateFormat不适用于createTempFile

问题描述 投票:0回答:3

我正在创建New TmepFile,并希望制作格式“yyyyMMdd”,但它直到createTempFile才有效。

private File createFile() throws IOException{
        String tempName = new SimpleDateFormat("yyyyMMdd").format(new Date());
        File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        Log.d("e",tempName);

        File image = File.createTempFile(
                tempName,
                ".png",
                storageDir

        );
        Log.d("e",image.getName());
        mCurrentPhotoPath = image.getAbsolutePath();
        return image;

    }

日志

D/e: 20190402
D/e: 201904021419980777854538831.png
java android file simpledateformat
3个回答
0
投票

简单的回答,你不能改变使用createTempFile创建的文件的名称。它具有每个文件的默认唯一名称。

根据https://docs.oracle.com/javase/7/docs/api/java/io/File.html#createTempFile(java.lang.String,%20java.lang.String,%20java.io.File),答案很长:

  1. 在调用此方法之前,返回的抽象路径名表示的文件不存在
  2. 在当前的虚拟机调用中,此方法及其任何变体都不会再次返回相同的抽象路径名。

0
投票

似乎是createTempFile方法本身的一部分。我正在查看文档并且它说“一旦进行了这些调整,就会通过连接前缀,五个或更多内部生成的字符以及后缀来生成新文件的名称。”它似乎在最后生成随机字符以保证唯一性。

你可以做什么我猜是将文件对象存储在你可以在你需要的地方存储的地方,只需要获得前6个字符,这些字符应该是日期,或者你可以创建一个普通的文件。也许你可以在创建它之后重命名临时文件,只使用前6个字符?不完全确定


0
投票

File.createTempFile允许您为创建的文件指定前缀和后缀,但是您没有指定全名,因为它的名称中包含随机部分。如果你想在temp-directory中有一个完全具有该名称的文件,你需要使用这样的东西:

File image = new File(
        System.getProperty("java.io.tmpdir") , 
        tempName + 
        ".png"
    );
© www.soinside.com 2019 - 2024. All rights reserved.