如何创建一些部分始终在变化的文件对象

时间:2016-01-20 16:28:15

标签: java

我想创建一个文件对象,如下所示

File file = new File("MyFile-abcdfg.txt");

-.之间的字符串是随机的并且总是在变化。长度也不一样。

我想查看file.exist(),但问题是我不确定该文件的名称是什么,因为它会不断变化。

5 个答案:

答案 0 :(得分:1)

您可以在此处找到可能的解决方案。

List of files starting with a particular letter in java

由于

答案 1 :(得分:0)

您可以创建一个String变量,例如:

String dynamicPartOfFileName = "abcdfg";

如果您愿意,可以通过任何其他机制(例如生成随机字符串)替换文字"abcdfg"

并将其用作文件名的一部分,如下所示:

File file = new File("MyFile-" + dynamicPartOfFileName + ".txt");

+ - 运算符将String加入new File()。之后,String - 构造函数将使用已加入的<globalization enableClientBasedCulture="false" requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB"/>

答案 2 :(得分:0)

您可以使用随机数从您可能的文件名中随机选择值。

Random rand = new Random();
int randomNumber = rand.nextInt(2); // 0-1.
String s1 = "-";
if(randomNumber == 0){
    s1 = "_";
}

int nameLength = rand.nextInt(100); //0-99
String characters = "";
String possibleCharacters = "abcdefg";
for(int i = 0; i < nameLength; i++){
    characters += possibleCharacters[rand.nextInt(possibleCharacters.length)];
}
String filename = "MyFile" + s1 + characters + ".txt";
File file = new File(filename);

if(file.exists() && !file.isDirectory()) { 
    // do something
}

答案 3 :(得分:0)

据我所知,问题不在于如何创建文件名,而在于如何检查具有该名称的文件是否存在。

如果您知道名称的形成规则(假设“aBeginning”+“aDatePresentation”+“anEnd”),那么您可以测试可能的文件,例如

boolean checkFileToday(){
   Date today = new Date();
   String name = "aBeginning"+today.getDate()+"anEnd";
   File file = new File(name);
   return file.exists();
}

答案 4 :(得分:0)

以下代码生成具有唯一名称的新文件。

import java.io.File;
import java.io.IOException;
import java.util.UUID;

public class DynamicFile {

    public static void main(String[] args) throws IOException {
        int i = 4;
        do {
            //UUID creates random string.
            String randomID = UUID.randomUUID().toString();
            File file = new File("A:/NewFolder/MyFile-" + randomID.substring(0, 5) + ".txt");
            file.createNewFile();
        } while (i-- > 0);
    }
}

将创建如下文件:

  

MyFile的-1d2ef.txt