【发布时间】:2016-12-28 22:51:58
【问题描述】:
我正在创建一个文件,当我创建该文件时,我会检查它是否已经存在。如果它已经存在,我想用相同的名称创建它,但在它后面加上 (1)。我能够做到这一点,这是代码:
File apkReceived = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/"+receivedApkName + ".apk");
if(apkReceived.exists()){
apkReceived=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/"+receivedApkName + "(1)"+".apk");
}
byte[] buffer = new byte [8192];
FileOutputStream fos=new FileOutputStream(apkReceived);
然后它会继续......(我在文件上写东西)。
这可行,但问题是在这种情况下:
文件测试.apk
FileTest(1).apk
如果我收到另一个 Filetest,它将子我的 FileTest(1),因为它会再次创建它。 一个解决方案是检查文件是否再次存在,但我必须永远这样做。
我的目标是创建 (1) 然后 (2) 等。 有没有人知道怎么做?
编辑:显然我可以使用 cicle 来检查它。问题在于如何获得 (1) 然后是 (2) 而没有获得 (1)(2)
【问题讨论】:
-
but then i would have to be doing that for ever.不。只需一个简单的 while 循环即可检查这些文件是否存在。 -
哇。这是一个非常愚蠢的问题。我什至感到尴尬。我很抱歉。我已经37小时没睡了。非常抱歉。
-
原则上您可以将
if(apkReceived.exists()更改为while(apkReceived.exists()。然后使用number variable so you can construnt (number) for (1).6 个答案都太复杂了。 -
问题在于,在第二次运行 cicle 时,它会检查 FileTest(1).apk 是否已经存在,这没问题,但随后它会创建一个 FileTest(1)( 2).apk。在 Marcin 告诉我有关 cicle 的事情(我显然“醒了”)并按照你说的做之后,但我会在 filetest(1)(2)
-
一个字都不懂。不会有任何问题。但是由于您已经检查了答案,因此该帖子已关闭。
标签: java android performance file io