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++错误之类的窗口” “程序无响应” “假死”等 此种崩溃特点 ...
随机推荐
- python常用命令—‘\r’
# \r 默认表示将输出的内容返回到第一个指针,这样的话,后面的内容会覆盖前面的内容 如常用的显示程序完成进度!!
- Python中的from等价于import的语法
Python中导入module文件有两种方式:import和from.这里并不会列举import和from的具体使用方法,而是比较两者之间的差别. 对于from语句来说,它其实是等价于下面的impor ...
- Python的string模块化方法
Python 2.X中曾经存在过一个string模块,这个模块里面有很多操作字符串的方法,但是在Python 3.X中,这些模块化方法已经被移除了(但是string模块本身没有被移除,因为它还有其他可 ...
- Java学习个人备忘录之多线程
进程:正在进行中的程序(直译). 线程:就是进程中一个负责程序执行的控制单元(执行路径) 一个进程中可以有多个执行路径,称之为多线程. 一个进程中至少要有一个线程. 开启多个线程是为了同时运行多部分代 ...
- OpenGL ES 2.0 -- 制作 3D 彩色旋转三角形 - 顶点着色器 片元着色器 使用详解
最近开始关注OpenGL ES 2.0 这是真正意义上的理解的第一个3D程序 , 从零开始学习 . 案例下载地址 : http://download.csdn.net/detail/han120201 ...
- C#命名参数
文章:史上最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂神仙都难救你啦~ 命名参数规范+匿名对象 routes.MapRoute(name: "Default&qu ...
- lintcode-142-O(1)时间检测2的幂次
142-O(1)时间检测2的幂次 用 O(1) 时间检测整数 n 是否是 2 的幂次. 样例 n=4,返回 true; n=5,返回 false. 挑战 O(1) time 标签 比特位操作 思路 使 ...
- iOS- 封装单例宏
在项目中,我们需要全局只有一个实例,节省不必要的内存,这时我们就需要使用里单例生成对象. 这时把单例的代码封装成宏,就能方便我们下次使用了. 在.h .m里直接导入头文件,调用 传入类名即可! sin ...
- python爬虫 赶集网
#coding=utf-8import requestsfrom lxml import etreefrom sqlalchemy import create_enginefrom sqlalchem ...
- 【Docker 命令】- create命令
docker create :创建一个新的容器但不启动它 语法 docker create [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS同run命令 实例 使用 ...