Java - 我怎么说我不在乎这部分字符串包含什么?

标签 java file selenium

我有一些代码,我在其中获取时间戳,但是我想说我不在乎它是几秒,所以...这是我的代码:

    String timeStampString = new SimpleDateFormat("yyyyMMddHHmm").format(Calendar.getInstance().getTime());
    File fileName = new File(universal + "/Downloads/" + timeStampString);
    String newName = "allPi.csv";
    if (fileName.exists()) {
        fileName.renameTo(new File(universal + "/Downloads/allPi.csv"));
    }
    else
    {
        Assert.fail();
    }

下载的文件会有一个完整的时间戳,精确到秒,我怎么说我不关心秒部分是什么数字,比如timeStampString + "**";还是什么??

我尝试了一些随机的事情,比如:

   File fileName = new File(universal + "/Downloads/" + timeStampString + "[.+]");

有人能帮忙吗?

最佳答案

首先,不要使用 File类(class)。这是一个过时的、写得不好的类,不应在新代码中使用,因为自 Java 1.4 左右以来已经存在更好的替代方案。

相反,使用 PathFiles .它们有许多方法可以让您执行常见任务,此外还有更好的错误报告。

在这种特殊情况下,您可以使用 DirectoryStream ,它来自同一个类家族(java.nio.file)。 DirectoryStream 是目录中文件的可迭代对象。 Files 类允许您获取目录中与 glob 模式匹配的所有文件的 DirectoryStream。全局模式是熟悉的模式,例如 *.javaName-xyz-?.txt

在您的情况下,您假设您只有一个条目。所以您只需要关联迭代器中的第一个条目。

Path dir = Paths.get( universal, "Downloads" );
Path renameTo = Paths.get( universal, "Downloads", "allPi.txt" );
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, timeStampString + "*" )) {
    Iterator<Path> iterator = stream.iterator();
    if ( iterator.hasNext() ) {
        Path path = iterator.next();
        Files.move( path, renameTo, StandardCopyOption.REPLACE_EXISTING );
    }
}

当然,对于任何异常都有 try-catch。

关于Java - 我怎么说我不在乎这部分字符串包含什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39472168/

相关文章:

php - Laravel : The file was not uploaded due to an unknown error

java - 在 Java 中使用 Selenium WebDriver 下载 zip 文件 - 下载弹出窗口总是出现

Windows 上的 Java/MongoDB 消息长度错误,但 Linux 上没有

java - 如何保证只创建一个XMPPConnection?使用单例?

java - 我如何用 Jersey (java)初始化休息服务器中的对象?

python - 如何通过Python运行unix命令来就地编辑文件

java - 对对象调用 toString

linux - 在 bash 中将一个文件 append 到另一个文件的中间

selenium - Webdriver + TestNG 的 Selenium Grid 并行执行问题

java - Geb 测试 withWindow 未找到