我的代码将文件从ftp(使用文本传输模式)复制到本地磁盘,然后尝试处理它们。 所有文件仅包含文本,值使用新行分隔。有时使用二进制传输模式将文件移动到此ftp,看起来这样会破坏行尾。 使用十六进制编辑器,我根据用于将文件发送到ftp的传输模式比较行结束: 使用文本模式:文件结尾为0D 0A 使用二进制模式:文件结尾为0D 0D 0A
是否可以修改我的代码,以便在两种情况下都可以读取文件? 来自作业的代码说明我的问题,并显示我如何阅读文件: (这里我使用相同的文件,包含14行数据)
int i;
container con;
container files = ["c:\\temp\\axa_keio\\ascii.txt", "c:\\temp\\axa_keio\\binary.txt"];
boolean purchLineFirstRow;
IO inFile;
;
for(i=1; i<=conlen(files); i++)
{
inFile = new AsciiIO(conpeek(files,i), "R");
inFile.inFieldDelimiter('\n');
con = inFile.read();
info(int2str(conlen(con)));
}
文件来自Unix系统到Windows系统。 不确定但也许问题可能是:“我应该使用哪个inFieldDelimiter值来读取Unix和Windows行结束?”
答案 0 :(得分:0)
使用inRecordDelimiter
:
inFile.inRecordDelimiter('\n');
而不是:
inFile.inFieldDelimiter('\n');
最后一个字段可能仍然存在悬空CR,您可能希望将其删除:
strRem(conpeek(con, conlen(con)), '\r')