In MFT, when file is moved from source to transfer, we can rename the file.
This will be useful in scenarios when the file name is different than what is expected
Sometime during decryption the extension is lost, we can add a different extension
Sometimes we have to append a source to handle files from different sources differently
We can use RenameRegExp to rename the file
This uses same method as java replace. The input is Regular expression
Common use cases and examples
to completely rename the file –
String sourceRegExp = "([A-Za-z0-9_]+)([A-Za-z0-9.]*)";
String targetRegExp = "input_file.csv";
Input | Output |
ABC_SOME_BIG_FILE_NAME.csv | input_file.csv |
ABC_SOME_OTHER_FILE_NAME.csv | input_file.csv |
SOME_FILE_NAME_WITHOUT_EXTENSION | input_file.csv |
To completely change the extension
String sourceRegExp = "([A-Za-z0-9_]+)([A-Za-z0-9.]*)";
String targetRegExp = "$1.csv";
Input | Output |
some_data_1.txt | some_data_1.csv |
some_data_2.dat | some_data_2.csv |
some_data_3. | some_data_3.csv |
some_data_4.txt.pgp | some_data_4.csv |
some_data_5.txt.gpg | some_data_5.csv |
some_data_6.csv | some_data_6.csv |
some_data_7 | some_data_7.csv |
To add a prefix to the file name.
String sourceRegExp = "([A-Za-z0-9_.]+)";
String targetRegExp = "source_$1";
Input | Output |
some_data_1.txt | source_some_data_1.txt |
some_data_2.dat | source_some_data_2.dat |
some_data_3. | source_some_data_3. |
some_data_4.txt.pgp | source_some_data_4.txt.pgp |
some_data_5.txt.gpg | source_some_data_5.txt.gpg |
some_data_6.csv | source_some_data_6.csv |
some_data_7 | source_some_data_7 |
Sample Java code to test regular expression if the input / output is as expected:
public class RenameString {
public static void main(String[] args){
TestCase[] testCases = new TestCase[7];
testCases[0] = new TestCase("some_data.txt", "some_data.csv");
testCases[1] = new TestCase("some_data.dat", "some_data.csv");
testCases[2] = new TestCase("some_data.", "some_data.csv");
testCases[3] = new TestCase("some_data.txt.pgp", "some_data.csv");
testCases[4] = new TestCase("some_data.txt.gpg", "some_data.csv");
testCases[5] = new TestCase("some_data.csv", "some_data.csv");
testCases[6] = new TestCase("some_data", "some_data.csv");
for ( TestCase t : testCases) {
String output = renameFileNameExtension(t.inputStr);
System.out.print(t.inputStr + " --- " + t.expectedOutputStr + " --- " + output + " --- " );
if ( output.equals(t.expectedOutputStr) ) {
System.out.println("success");
}
else {
System.out.println("failed");
}
}
}
public static String renameFileNameExtension(String inputStr) {
String sourceRegExp = "([A-Za-z0-9_]+)([A-Za-z0-9.]*)";
String targetRegExp = "$1.csv";
String output = inputStr.replaceAll(sourceRegExp, targetRegExp);
return output;
}
}
class TestCase {
String inputStr;
String expectedOutputStr;
TestCase(String inputStr, String expectedOutputStr){
this.inputStr = inputStr;
this.expectedOutputStr = expectedOutputStr;
}
}
You can test Regular expression using this website https://regex101.com/ and selecting Java language.