我在构建程序来处理提供的文件时遇到问题。这些文件是使用UTF-8格式化的XML文件。奇怪的是,某些文件以 export function checkDisplay(webElement) {
expect(webElement.isDisplayed()).to.be.true;
}
var abc= element(by.css('mycss'));
checkDisplay(abc)
or
checkDisplay(element(by.css('mycss')))
结尾,并导致我们的XML解析器抛出错误。我希望构建一个函数来删除文件末尾的这些字节(如果存在),而无需“硬编码” 0x0A 0x00
。理想情况下,此函数可在将来用于具有任何大小的数组的任何类似行为。
这里是例外:
0x0A 0x00
这发生在某些文件中,但不是全部。这种行为的根本原因尚未发现。
对不起,我没有代码示例,因为我无法远程完成任何工作:)如果可以进行某些工作,我将编辑这篇文章。
任何见识都受到赞赏!
答案 0 :(得分:1)
像这样的事情应该可以解决问题,请记住,尽管它没有内置任何错误处理,但这仅仅是准系统功能:
static void TrimFile(string filePath, byte[] badBytes)
{
using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite))
{
byte[] bytes = new byte[badBytes.Length];
file.Seek(-badBytes.Length, SeekOrigin.End);
file.Read(bytes, 0, badBytes.Length);
if (Enumerable.SequenceEqual(bytes, badBytes))
{
file.SetLength(Math.Max(0, file.Length - badBytes.Length));
}
}
}
您可以这样称呼它:
TrimFile(filePath, new byte[] { 0x0A, 0x00 });
这是我最后用0xCA 0xFE 0xFF 0xFF
创建的一个测试文件(一些仓位数据)
62 75 6E 6B 20 66 69 6C 65 CA FE FF FF
bunk fileÊþÿÿ
运行TrimFile(filePath, new byte[] { 0xCA, 0xFE, 0xFF, 0xFF });
62 75 6E 6B 20 66 69 6C 65
bunk file
希望这会派上用场!