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    }

时间: 2024-10-13 09:00:04

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

8.3 sikuli 集成进eclipse 报错:eclipse中运行提示 Win32Util.dll: Can&#39;t load 32-bit .dll on a AMD 64 bit platform

sikuli运行出现问题:Win32Util.dll: Can't load 32-bit .dll on a AMD 64 bit platform 在64位平台上无法加载32位的dll文件 解决办法:将该工程设置成JDK为32位的 之前eclipse中默认加载的是64位jdk .但由于eclipse中TESTNG需要用到1.7 jdk .为保证在解决问题后,testNG还能正常使用.所以原博主是下了个32位  1.7 jdk,将该工程设置成这个就ok了 解决问题启发来自: http://ww

项目中有错但文件中没错解决方案

tutoriAlspoint.com   处理JsonThe  Central  Repository  插件Maven项目   pop.xml下载 *项目中有错但文件中没错解决方案:右击项目Properties--Project  Facets--Java换成1.8(跟JDK版本一样)在Markers中把有错的删掉,重新编译.Build  Automatically之前默认打着勾,把勾去掉.重新编译,clean*maven中下载包:JavaEE Tools--Update ERA Librar

Linux命令-统计文件中的字节数、字数、行数:wc

Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数.字数.行数,并将统计结果显示输出.该命令统计指定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所指定文件的总统计数. 3.命令参数: -c 统计字节数. -l 统计行数. -m 统计字符数.这个标志不能与 -c 标志一起使用. -w 统计字数.一个字被定义为由空白.

DataTables学习:从最基本的入门静态页面,使用ajax调用Json本地数据源实现前端开发深入学习,根据后台数据接口替换掉本地的json本地数据,以及报错的处理地方,8个例子(显示行附加信息,回调使用api,动态显示和隐藏列...),详细教程

一.DataTables  个人觉得学习一门新的插件或者技术时候,官方文档是最根本的,入门最快的地方,但是有时候看完官方文档,一步步的动手写例子,总会出现各种莫名其妙的错误,需要我们很好的进行研究出错的地方. 官方网站(中文):http://datatables.club/ 官方网站:https://www.datatables.net/  二.简单的例子 怎样简单地使用DataTables?使用下方简单的几行代码,一个方法初始化table. $(document).ready(function

ecplise导入项目报错而文件不报错

第一步 确认项目的jdk和tomcat版本,在Java Build Path的Libraries中查看包是否有报错,按照本机环境进行配置 第二步 检查 Java Compiler中的jdk版本,和ecplise中Workspace的编码设置 第三步 检查项目文件的设置,进入进入项目包下的.settings目录,找到org.eclipse.wst.common.project.facet.core.xml文件,发现运行环境的配置有问题,把整行删掉,之后项目刷新错误消失. 原文地址:https://

WinDbg抓取程序报错dump文件的方法

程序崩溃的两种主要现象: a. 程序在运行中的时候,突然弹出错误窗口,然后点错误窗口的确定时,程序直接关闭 例如: “应用程序错误” “C++错误之类的窗口” “程序无响应” “假死”等 此种崩溃特点:程序已异常,在你未点出错窗口的确定或其他按,所有错误信息都还保留在PC的内存中,可以直接抓取Dump文件.当然,如果你知道 怎么样操作可以让程序崩溃,也可以用守株待兔的抓取方法抓Dump文件. b.程序在运行中的时候,窗口和进程突然消失,没有任何错误窗体 典型的现象:程序自动关闭 或者玩游戏时,游

Error parsing XML: not well-formed (invalid token) 报错+R文件消失解决办法

xml报错: 这个xml文件上右键source ->format 注意:res下的文件名不能大写 R文件消失: 在解决了其他问题的情况下(或者其他问题还没解决先注释掉) 手动删除gen project clean后重新build 版权声明:本文为博主原创文章,未经博主允许不得转载.

Error parsing XML: not well-formed (invalid token) 报错+R文件消失解决的方法

xml报错: 这个xml文件上右键source ->format 注意:res下的文件名称不能大写 R文件消失: 在攻克了其它问题的情况下(或者其它问题还没解决先凝视掉) 手动删除gen project clean后又一次build

之前的Android项目报错,新建Android项目报错,代码中找不到错误解决方案

打开一年前的东西,结果发现里面的android项目全部有个红叉,也找不到错误.新建一个项目也报错,首先确定自己的环境应该没问题,然后通过查看网上的资料,发现可能是debug的keystore到期啦. 通过网上资料的引导,做以下操作: 1.进入C:\Documents and Settings\Administrator\.android 删除路径下的debug.keystore及 ddms.cfg(我只删除了debug.kestore也可以.网上说两个都删除).(不同环境下的目录可能略有不同,可