将反斜杠更改为正斜杠会更改文件大小

Posted

技术标签:

【中文标题】将反斜杠更改为正斜杠会更改文件大小【英文标题】:Changing backslashes to forward slashes changes file size 【发布时间】:2013-08-20 15:11:21 【问题描述】:

我有两个中小型文件 (2k),它们的所有意图和目的都相同。第二个文件是第一个文件被复制并用正斜杠替换反斜杠的结果。新文件大了 80 个字节(或每行一个字节)。

我用一个简单的批处理脚本来做这个,起初我认为脚本可能无意中添加了一些空格或其他工件。或者他们的扩展名不同的事实可能与此有关(一个有tmp 扩展名,另一个有lst 扩展名)。

在编辑器中,我用反斜杠替换了新文件中的所有正斜杠,并在不更改扩展名的情况下保存了它。

还有,你猜怎么着?文件又是原来的大小了。

现在,在将其作为随机侥幸注销之前,我还看到以与第一个相同的方式创建的其他三对文件(即六个文件)中表现出相同的行为。它们在文件中每行都大一个字节。最大约12k字节,最小约2k。

我认为这与转义无关,因为我在使用 Windows 7 cmd.exe shell 的 Windows 机器上。

还有另一件事。我尝试了以下方法:

  echo \\\\\ >> a.txt
  echo ///// >> b.txt

大小匹配的文件(7 字节)

有人对此行为有解释吗?

【问题讨论】:

您可以发布您使用的脚本吗?它将帮助人们复制它...... 我要做的第一件事是在十六进制编辑器中检查它们。我的猜测是在保存过程中正在更改行尾。 你用什么软件/程序来转换斜线?我敢打赌 UTF-8 编码。 看我的回答。结果没有我希望的那么令人兴奋。 【参考方案1】:

我建议使用Notepad++ 之类的编辑器打开文件,该编辑器显示换行符的类型(Windows/Mac/Unix)。如果文件大小每行相差 1 个字节,这很可能是您的问题。

Notepad++ 可以将行尾显示为小的 CR/LF 符号(查看 -> 显示符号 -> 显示行尾)并在 Windows/Mac/Unix 行尾之间进行转换(编辑 -> EOL 转换)。

Unix 和 Mac 系统通常都存储以一个字节行结尾的文件(Mac:CR,Unix:LF),Windows 使用两个字节(CR LF)。

根据您的批处理脚本使用的程序,即使您的系统是纯 Windows 机器,也可能会发生这种情况。使用编辑器没有区别的原因是编辑器通常会保留文件的原始行结尾。

【讨论】:

【参考方案2】:

好的。我刚刚解决了。 @schnaader 为我指出了正确的方向。它实际上与正斜杠或反斜杠无关。

发生的事情是我的脚本在每一行添加了一个尾随空格字符。为什么在我恢复斜杠后文件再次变得相同大小是因为我用来查找和替换的编辑器(Komodo Edit)设置为在文件保存时自动修剪尾随空格。

有趣。

【讨论】:

好的,略有不同,但相似。顺便说一句,这也可以使用 Notepad++ 轻松检测到(查看 -> 显示符号 -> 显示空白和制表符):) 根据您的建议,我使用了 Notepad++。这绝对是一个合适的地方。谢谢

以上是关于将反斜杠更改为正斜杠会更改文件大小的主要内容,如果未能解决你的问题,请参考以下文章

在R中有效地将反斜杠转换为正斜杠

PHP中如何将反斜杠()替换为正斜杠(/)

在 Windows 批处理文件中将反斜杠更改为正斜杠

单引号是不是将反斜杠视为 bash 脚本中的特殊字符?

python之文件目录和路径

如何将反斜杠替换为字符串Python中的不同字符