如何在批次类中打开/操作文件?

时间:2015-11-18 21:12:42

标签: batch-processing axapta readfile dynamics-ax-2012 x++

我必须从文件中导入表格(例如csv)。 我用了这段代码:

public void run ()
{ 
    TextIO textIO;

    str filename, fileOpen, folder;
    int handle;
    Io thisMYFile;
    FileIoPermission perm;

    #File
    #avifiles
    #OCCRetryCount

    [handle, filename]  =   WINAPI::findFirstFile(folder + "\\*.csv");

    fileOpen = strFmt (folder + "\\" +  filename);

    perm = new FileIoPermission(fileOpen, 'w');
    perm.assert();

    thisMYFile = new CommaTextIo(fileOpen , 'w');
}

但是在调试中, IO thisMYFile null ,所以我无法阅读和获取信息。< / p>

在我的class declaration中,我扩展了 RunBaseBarch

如果我使用“普通”类(不是批处理),我可以读,写,移动文件等,但现在我无法打开。

我知道WinAPI类在Batch中不起作用,现在我认为还有另一种批量读取/打开文件的方法吗?使用WinAPIServer类我可以 findFirstFile 吗? 澄清一下,如果我没有安排批处理过程,我也会遇到同样的问题:批处理对话框中的标志批处理 false ,并且只点击了确定。 (示例图片)

example image

如果您有教程,任何建议或帮助,

全心全意,

享受!

1 个答案:

答案 0 :(得分:4)

请注意批处理在其他计算机上运行,​​AOS将无法访问您的本地文件 因此,请始终对文件使用完整的UNC file path,例如。 \\ MYHOST \ TEMP \ x.csv

如果"gulp demo MY_API_KEY=testest" 无法打开文件,它将返回new CommaTextIO,它不会抛出异常。如果您不测试null,您的代码将在以后失败。