如何编写sailpoint beanshell java脚本来读取文件名以'SampleFile***.csv'开头的最新文件

问题描述

我正在尝试在 beanshell 中编写一个 java,我需要在其中读取文件重命名它们。但问题是文件名有根据日期每天变化的附加数字,例如。 SampleFile0521、SampleFile0524。我需要读取带有最新时间戳的 File 并以 SampleFile 开头。

解决方法

您的问题并非特定于 Sailpoint IIQ 或 Beanshell。其实这里解决的似乎是一个纯粹的Java问题。

但是,您的问题缺少一些信息。这里的背景是什么?您是否尝试在分隔文件 IIQ 连接器中读取 CSV 文件?而读完文件后,需要重命名吗?这里有很多假设。

这里似乎发生的事情是,您有一个分隔文件 IIQ 连接器,它需要一个特定的输入文件(假设是 SampleFile.txt),但每天您都会得到一个新文件,例如 SampleFileMMdd.txt,您需要将其重命名为处理前的 SampleFile.txt。

如果是这种情况,您可以在预处理规则中尝试一些这样的代码。

    import java.io.File;
    import java.text.SimpleDateFormat;
    import java.util.Date;

    SimpleDateFormat sdf = new SimpleDateFormat("MMdd");
    String expectedFileName = "SampleFile"+sdf.format(new Date())+".txt";
    File dir = new File(<YOUR TARGET DIR HERE>);
    File f = new File(dir,expectedFileName);
    boolean worked = f.renameTo(new File(dir,"SampleFile.txt"));
    if (!worked) {
        //for example,there was already a file called SampleFile.txt up there
        throw new Exception("Could not rename the file...");
    }
,

可以尝试在 Sailpoint 中的 Post-Iterate 规则中编写重命名代码。