我需要读取文件夹中所有文件的内容,每次一个,并在读取后将文件移动到另一个文件夹。我已经硬编码阅读了一个文件。将lob从文件"E:\New\a.txt"复制到c-edistring。
假设有三个文件a.txt,b.txt,c.txt.
读取.txt后,应将文件移到另一个文件夹E:\Old。然后是b和c。
DEFINE VARIABLE cFileShort AS CHARACTER NO-UNDO .
DEFINE VARIABLE cFileLong AS CHARACTER NO-UNDO.
DEFINE VARIABLE cType AS CHARACTER NO-UNDO.
INPUT FROM OS-DIR ("e:New") .
REPEAT:
IMPORT cFileShort cFileLong cType .
/* File or Directory ? */
IF cType MATCHES "*F*" THEN
MESSAGE "ShortFileName" cFileShort SKIP
"LongFileName" cFileLong .
END.
要移动文件,不需要使用COPY-LOB,它会将文件内容复制到内存中。
OS-COPY VALUE (cFileLong) VALUE (SUBSTITUTE ("e:Old&1", cFileShort) .
IF OS-ERROR = 0 THEN
OS-DELETE VALUE (cFileLong) .
在上面的循环中,将在不将完整文件读入内存的情况下进行移动。
当您可以依靠.NET(Windows、OpenEdge 10.2B及更高版本)时,您也可以使用.NET类进行文件操作,类似于https://msdn.microsoft.com/en-us/library/cc148994(v=vs.100).aspx
几年前,我写了一个工具程序来做你想做的事情-你可以在这里获得一份:https://community.progress.com/community_groups/openedge_general/w/openedgegeneral/1615.directory-tools