我通过将文件中的行结尾从DOS转换为UNIX格式的C#文件中删除了Carriage return。这基本上意味着我正在删除文件格式的回车符。在Windows中创建一个tar归档文件重新引入了CR字符
的代码我使用:
private void Dos2Unix(string fileName)
{
const byte CR = 0x0D;
const byte LF = 0x0A;
byte[] data = File.ReadAllBytes(fileName);
using (FileStream fileStream = File.OpenWrite(fileName))
{
BinaryWriter bw = new BinaryWriter(fileStream);
int position = 0;
int index = 0;
do
{
index = Array.IndexOf<byte>(data, CR, position);
if ((index >= 0) && (data[index + 1] == LF))
{
// Write before the CR
bw.Write(data, position, index - position);
// from LF
position = index + 1;
}
}
while (index > 0);
bw.Write(data, position, data.Length - position);
fileStream.SetLength(fileStream.Position);
}
}
但经过我转换,从DOS到Unix的格式,我需要创建所有转换后的文件的一个tar归档。当我使用此代码创建文件的tar归档文件时:
batchFileContents[1] = String.Format("\"C:\\Program Files (x86)\\7-Zip\\7z.exe\" a -ttar -so archive.tar \"{0}\"* | " +
"\"C:\\Program Files (x86)\\7-Zip\\7z.exe\" a -si \"{1}\"", inputDirectory, nameOfFile);
File.WriteAllLines("execute.bat", batchFileContents);
回车符将在所有文件中重新出现。
上面的dos2unix函数能够去掉回车符。但问题是,当tar创建存档时,回车再次出现。如何避免这一点?
我该如何解决这个问题?需要一些指导。
我建议安装cygwin并使用** dos2unix **删除回车符,** tar **创建归档文件。 – Rumbleweed
dos2unix函数能够删除回车符。但问题是,当tar创建存档时,回车再次出现。如何避免这一点。 – lakesh
Tar不会修改文件。 7z是你的罪魁祸首。 – Rumbleweed