Hello all,
I have a problem with my class running as batch, it does not delete files (code below). There are two locations in the code that delete the file(System.IO.File::Delete), the first call is OK (file is deleted), but once the file is opened the next code does not delete the file. In logs I get an RPC1702 error, but this is not a problem with directory access because the first delete command works fine.
What is wrong with my code, or what should I do to have working solution ?
This code was copied from msdn.microsoft.com/…/cc967403.aspx and converted to batch format.
private void fileList()
{
TextIo txIoRead,
txIoWrite;
FileIOPermission fioPermission;
container containFromRead;
int xx,
iConLength;
str sTempPath,
sFileName = “aa.csv”,
sOneRecord;
Filename sourcePath = @“C:\my_dir\aa.csv”;
;
// Get the temporary path.
//sTempPath = WINAPI::getTempPath();
info("File is at: " + sTempPath + sFileName);
[sTempPath, sFileName] = fileNameSplit(sourcePath);
sFileName = “aa.csv”;
// Assert permission.
fioPermission = new FileIOPermission
(sTempPath + sFileName ,“RW”);
fioPermission.assert();
// If the test file already exists, delete it.
if (System.IO.File::Exists(sourcePath))
{
System.IO.File::Delete(sTempPath + sFileName);
}
// Open a test file for writing.
// “W” mode overwrites existing content, or creates the file.
txIoWrite = new TextIo( sTempPath + sFileName ,“W”);
// Write records to the file.
txIoWrite.write(“Hello World.”);
txIoWrite.write(“The sky is blue.”);
txIoWrite.write("");
txIoWrite.write("// EOFile");
// Close the test file.
txIoWrite = null;
// Open the same file for reading.
txIoRead = new TextIo(sTempPath + sFileName ,“R”);
// Read the entire file into a container.
containFromRead = txIoRead.read();
// Loop through the container of file records.
while (containFromRead)
{
sOneRecord = “”;
iConLength = conLen(containFromRead);
// Loop through the token in the current record.
for (xx=1; xx <= iConLength; xx++)
{
if (xx > 1) sOneRecord += " ";
sOneRecord += conPeek(containFromRead ,xx);
}
info(sOneRecord);
// Read the next record from the container.
containFromRead = txIoRead.read();
}
// Close the test file.
txIoRead = null;
// Delete the test file.
System.IO.File::Delete(sTempPath + sFileName);
// revertAssert is not really necessary here,
// because the job (or method) is ending.
CodeAccessPermission::revertAssert();
}