如何从一个目录中读取所有文件并将文件移动到另一个正在进行的目录openedge4gl



我需要读取文件夹中所有文件的内容,每次一个,并在读取后将文件移动到另一个文件夹。我已经硬编码阅读了一个文件。将lob从文件"E:\New\a.txt"复制到c-edistring。

假设有三个文件a.txt,b.txt,c.txt.

读取.txt后,应将文件移到另一个文件夹E:\Old。然后是b和c。

INPUT FROM OS-DIR语句允许您检索文件夹中所有文件的列表。
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

相关内容

  • 没有找到相关文章

最新更新