You ever need to move a file through PeopleCode? Perhaps an App Engine program that needs to move generated content into the process output directory? I found myself in that position today. Surely there is a PeopleCode function for that... right? If you have one, please share it, because it seems the Internet doesn't know about it. A quick Internet search turned up several examples of using Exec
with mv
. I'm always weary of Exec. If I have to use the command line, I prefer to control it through the Java Runtime (see Exec Processes while Controlling stdin and stdout). Speaking of Java, can we borrow anything from the JRE? I did find my old ITToolbox response showing how to use java.io.File.renameTo to move files. It is still a great solution, but with multiple mounted file systems... well... it actually might fail. So I got to thinking... what about using java.nio? Here is an example:
Local JavaObject &jSource = CreateJavaObject("java.io.File", "c:\temp\JSM_TEST.log").toPath(); Local JavaObject &jTarget = CreateJavaObject("java.io.File", "c:\temp\JSM_TEST_moved.log").toPath(); Local JavaObject &jFiles = GetJavaClass("java.nio.file.Files"); Local JavaObject &jOptions = CreateJavaObject("java.nio.file.CopyOption[]"); &jFiles.move(&jSource, &jTarget, &jOptions);
And, what if you want to overrwrite the destination? Try it with copy options:
Local JavaObject &jSource = CreateJavaObject("java.io.File", "c:\temp\JSM_TEST.log").toPath(); Local JavaObject &jTarget = CreateJavaObject("java.io.File", "c:\temp\JSM_TEST_moved.log").toPath(); Local JavaObject &jFiles = GetJavaClass("java.nio.file.Files"); Local JavaObject &jStandardCopyOptions = GetJavaClass("java.nio.file.StandardCopyOption"); Local JavaObject &jOptions = CreateJavaObject("java.nio.file.CopyOption[]", &jStandardCopyOptions.REPLACE_EXISTING); &jFiles.move(&jSource, &jTarget, &jamp;Options);
For more details about copy options, take a look at the Java Docs.
Are you ready to take your PeopleSoft development skills to the next level? Check out our latest course offerings at jsmpros.com. Prefer a custom agenda? Contact us for details.