数据库以下文件行尾不一致_vs报错“以下文件中的行尾不一致,是否将行尾标准化”...

标签:

vs报错“以下文件中的行尾不一致,是否将行尾标准化”

20180110202208193698.png

分析:

通过读取源文件,发现换行都使用的是“\n”

20180110202208195651.png

Windows和Unix不同的标准引起的...即“回车”和“换行”的问题...

符号

ASCII码

意义

\n

10

换行NL

\r

13

回车CR

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。到了GUI时代光标都是自由移动的不再有回车的意义...

所以符合Windows开发标准的文本编辑器Visual Studio才会提醒你当前编辑的文本不符合Windows行尾标准..

1.Windows 中的换行符"\r\n"

2.Unix/Linux 平台换行符是 "\n"。

3.MessageBox.Show() 的换行符为 "\n"

4.Console 的换行符为 "\n"

换行符还因平台差异而不同。

解决方案:

1. 为保持平台的通用性,可以用系统默认换行符 System.Environment.NewLine。

2. 替换所有的非标准换行符

335b83df261c422459d4afc29ba290e5.png

d1b641f023dd079c9e4a800b96607d9d.gif

1 classProgram_Utf82 {3 static void Main(string[] args)4 {5 String folderPath = @"E:\文件夹路径\";6

7 ParseDirectory(folderPath, "*.cs", (filePath) =>

8 {9 string text = "";10 using (StreamReader read = newStreamReader(filePath, Encoding.Default))11 {12 string oldtext =read.ReadToEnd();13 text =oldtext;14 text = text.Replace("\n", "\r\n");15 text = text.Replace("\r\r\n", "\r\n"); //防止替换了正常的换行符

16 if (oldtext.Length ==text.Length)17 {18 Console.WriteLine(filePath.Substring(filePath.LastIndexOf("\\") + 1) + "不需要标准化");19 return; //如果没有变化就退出

20 }21 }22 File.WriteAllText(filePath, text, Encoding.UTF8); //utf-8格式保存,防止乱码

23

24 Console.WriteLine(filePath.Substring(filePath.LastIndexOf("\\") + 1) + "行尾标准化完成");25 });26

27 Console.ReadKey();28 }29

30 /// 递归所有的目录,根据过滤器找到文件,并使用委托来统一处理

31 ///

32 ///

33 ///

34 static void ParseDirectory(string folderPath, string filter, Actionaction)35 {36 if (string.IsNullOrWhiteSpace(folderPath)37 || folderPath.EndsWith("debug", StringComparison.OrdinalIgnoreCase)38 || folderPath.EndsWith("obj", StringComparison.OrdinalIgnoreCase)39 || folderPath.EndsWith("bin", StringComparison.OrdinalIgnoreCase))40 return;41

42 Console.WriteLine("读取目录:" +folderPath);43

44 //处理文件

45 string[] fileNameArray =Directory.GetFiles(folderPath, filter);46 if (fileNameArray.Length > 0)47 {48 foreach (var filePath infileNameArray)49 {50 action(filePath);51 }52 }53 else

54 {55 Console.WriteLine("未发现文件!");56 }57

58 Console.WriteLine("====================================");59

60 //得到子目录,递归处理

61 string[] dirs =Directory.GetDirectories(folderPath);62 var iter =dirs.GetEnumerator();63 while(iter.MoveNext())64 {65 string str = (string)(iter.Current);66 ParseDirectory(str, filter, action);67 }68 }69 }

View Code

标签:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值