出于某种原因,似乎 File.ReadAllLines 有一个不可思议的问题,将所有日期从 yyyy/mm/dd 转换为 yy/mm/dd。
问题是我正在使用可以一直回溯到 1901 年的历史数据,从而导致速记日期符号出现问题。
public static string[] readFileToStringArray(string filePath = null, string fileName = null)
{
string[] lines = null;
if (File.Exists(filePath + fileName))
{
//lines = File.ReadAllLines(filePath + fileName);
lines = File.ReadAllLines(filePath + fileName, Encoding.UTF8);
string unescape = String.Empty;
List<string> thisCSV = new List<string>();
foreach (string line in lines)
{
unescape = line.Replace("\"", "");
thisCSV.Add(unescape );
}
lines = thisCSV.ToArray();
}
return lines;
}
奇怪的是它不会对所有文件都这样做,我有几个运行这个脚本。然后我检查了物理文件,那里一切正常。
它是一个有效的 CSV,所有内容都封装为文本。
知道如何否定这一点,因为修复内存/流中的整个数据集是不可能的?已经检查过MSDN但那里没有帮助。
此时唯一涉及的其他代码是辅助方法,但无关紧要,因为它唯一要做的就是创建文件名列表。
public static List<string> GetFilesinDirectory(string filesPath)
{
List<string> files = new List<string>();
string physicalFilesPath = (string)HttpContext.Current.Server.MapPath(filesPath);
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(physicalFilesPath);
foreach (var file in dir.GetFiles())
{
string thisfile = physicalFilesPath + "\\" + (string)file.Name;
files.Add(thisfile);
}
return files;
}
谢谢