问题描述
我正在尝试在 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 规则中编写重命名代码。