0
我一直在试图从.net ftp一个dtl文件,我相信,是一个AS400。报告给我的错误是:“一行或多行被截断”,管理员说这个文件正在过来,有256行具有可变长度列。我在网上找到这个解释:如何在C#.NET中设置LRECL?
我们必须建立默认值,因为没有关于文件的细节。默认的RECFM是V,LRECL是256.这意味着SAS将扫描输入记录寻找CR & LF,告诉我们我们正在EOR。如果在LRECL的限制范围内找不到标记,SAS会将数据从LRECL值丢弃到记录末尾,并向Log中添加一条消息,指出“一条或多条线已被截断”。
所以我需要设置LRECL。我如何在C#.NET中做到这一点?
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath);
ftp.Credentials = new NetworkCredential(user, pwd);
ftp.KeepAlive = false;
ftp.UseBinary = false;
ftp.Method = WebRequestMethods.Ftp.UploadFile;
FileStream fs = File.OpenRead(inputfilepath + ftpfileName);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
Stream ftpstream = ftp.GetRequestStream();
int i = 0;
int intBlock = 1786;
int intBuffLeft = buffer.Length;
while (i < buffer.Length)
{
if (intBuffLeft >= 1786)
{
ftpstream.Write(buffer, i, intBlock);
}
else
{
ftpstream.Write(buffer, i, intBuffLeft);
}
i += intBlock;
intBuffLeft -= 1786;
}
ftpstream.Close();
?你是否将它设置为二进制或文本传输?你有任何代码向我们展示? – ChrisBD 2010-05-27 14:04:23