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

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

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. 替换所有的非标准换行符
1 class Program_Utf8
2 {
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 = new StreamReader(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 /// <summary>递归所有的目录,根据过滤器找到文件,并使用委托来统一处理</summary>
31 /// <param name="info"></param>
32 /// <param name="filter"></param>
33 /// <param name="action"></param>
34 static void ParseDirectory(string folderPath, string filter, Action<string> action)
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 in fileNameArray)
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 }

vs报错“以下文件中的行尾不一致,是否将行尾标准化”的更多相关文章
- open file /var/mobile/Media/DCIM 相册中获取到的视频地址使用 报错 视频文件不存在
从相册中获取到的视频地址 例如 file:///var/mobile/Media/DCIM/100APPLE/IMG_9876.MOV 后面再使用的时候报错 视频文件不存在 那是因为在ios10. ...
- 报错 source-1.6 中不支持 diamond运算符
报错 source-1.6 中不支持 diamond运算符 解决方式 在pom.xml文件中修改 <plugin> <groupId>org.apache.maven.plug ...
- Linux命令-统计文件中的字节数、字数、行数:wc
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...
- SAP QA32试图做UD,系统报错-工厂 BTYC中的 QM 基选设置需要维护
SAP QA32 试图做UD,系统报错 - 工厂 BTYC 中的 QM 基选设置需要维护 - 检验批 10000062593,试图做使用决策,系统报错, 工厂 BTYC 中的 QM 基选设置需要维护 ...
- sharepoint 2013 文档库 资源管理器打开报错 在文件资源管理器中打开此位置时遇到问题,将此网站添加到受信任站点列表,然后重试。
我们在使用sharepoint 2013的文档库或者资源库的时候,经常会需要用到使用“资源管理器”来管理文档,但是有时候,点击“使用资源管理器打开”,会提示如下错误: 在文件资源管理器中打开此位置时遇 ...
- VS2010 报错该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
尤其代码是从linux平台复制过来: 报错如图: 更有甚者基本函数都报错: 当下检查发现if else break case等基本函数并无问题时,报错行数明显不一致等一定要注意文档编码格式, 最简单的 ...
- DataTables学习:从最基本的入门静态页面,使用ajax调用Json本地数据源实现前端开发深入学习,根据后台数据接口替换掉本地的json本地数据,以及报错的处理地方,8个例子(显示行附加信息,回调使用api,动态显示和隐藏列...),详细教程
一.DataTables 个人觉得学习一门新的插件或者技术时候,官方文档是最根本的,入门最快的地方,但是有时候看完官方文档,一步步的动手写例子,总会出现各种莫名其妙的错误,需要我们很好的进行研究出错 ...
- ecplise导入项目报错而文件不报错
第一步 确认项目的jdk和tomcat版本,在Java Build Path的Libraries中查看包是否有报错,按照本机环境进行配置 第二步 检查 Java Compiler中的jdk版本,和ec ...
- WinDbg抓取程序报错dump文件的方法
程序崩溃的两种主要现象: a. 程序在运行中的时候,突然弹出错误窗口,然后点错误窗口的确定时,程序直接关闭 例如: “应用程序错误” “C++错误之类的窗口” “程序无响应” “假死”等 此种崩溃特点 ...
随机推荐
- leetcode个人题解——#5 Container with most water
class Solution { public: string longestPalindrome(string s) { int length = s.length(); ) return s; ; ...
- HDU 3260/POJ 3827 Facer is learning to swim(DP+搜索)(2009 Asia Ningbo Regional)
Description Facer is addicted to a game called "Tidy is learning to swim". But he finds it ...
- HDU 1403 Longest Common Substring(后缀自动机——附讲解 or 后缀数组)
Description Given two strings, you have to tell the length of the Longest Common Substring of them. ...
- windows批处理学习(for和字符串)---03
[1]for命令简介 先把for循环与for命令类比一下,这样学习理解快. for 循环语句,一般格式如下: 1 for (表达式1;表达式2;表达式3) 2 { 3 循环体; 4 } 1. 表达式1 ...
- win7主题/默认账户图片路径
账户图片位置 C:\ProgramData\Microsoft\User Account Pictures 主题位置 C:\Windows\Resources
- linux解压zip
用 unzip 的先安装 yum install -y unzip #unzip file.zip -d /root -d指解压路径 ,不写的话默认当前目录
- WITH REPLACE 含义
RESTORE DATABASE db_CSharp from disk='backup.bak' WITH REPLACE WITH REPLACE后面是限定条件,with replace意思是替换 ...
- QT分析之QPushButton的初始化
原文地址:http://blog.163.com/net_worm/blog/static/127702419201001003326522/ 在简单的QT程序的第二行,声明了一个QPushButto ...
- java 中使用Base64
byte[] cipherData = Base64.encodeBase64(plainText.getBytes()); //默认不换行 byte[] cipherData = Base64.en ...
- 【bzoj4491】我也不知道题目名字是什么 离线扫描线+线段树
题目描述 给定一个序列A[i],每次询问l,r,求[l,r]内最长子串,使得该子串为不上升子串或不下降子串 输入 第一行n,表示A数组有多少元素接下来一行为n个整数A[i]接下来一个整数Q,表示询问数 ...