为什么 FileReader 向文件附加换行符?
Why is FileReader appending line break to files?
我正在尝试使用 FileReader 加载删除的文件,但如果文件不以一个结尾,则会将一个神秘的“\n”字符附加到文件中。
删除一个不以换行符结尾的文本文件,然后看到文件的最后一个字符将是“\n”(代码 10)。
let fileReader = new FileReader();
fileReader.onload = function(event) {
let lastChar = this.result.charCodeAt(this.result.length - 1);
document.querySelector("#last_char").innerText = lastChar;
document.querySelector("#length").innerText = this.result.length;
for (let i = 0; i < this.result.length; ++i) {
console.log(this.result.charCodeAt(i));
}
}
function drop(event) {
event.stopPropagation();
event.preventDefault();
var files = event.dataTransfer.files; //It returns a FileList object
for (var i = 0; i < files.length; i++) {
var file = files[i];
fileReader.readAsText(file);
}
}
* {
box-sizing: border-box;
}
html,
body {
height: 100%;
}
#drop_area {
width: 100%;
height: 50%;
border: 3px dashed #aaaaaa;
border-radius: 10px;
text-align: center;
}
<div id="drop_area" ondrop="drop(event)" ondragover="event.preventDefault()">drop a text file here</div>
<div>Last char:</div>
<div id="last_char"></div>
<div>Length:</div>
<div id="length"></div>
原来是Unix的东西,跟javascript一点关系都没有。似乎它总是以换行符结束,无论你是否插入它,无论你的编辑器是否显示它。所以发生的事情是我认为我的文件没有换行符,因为我的编辑器没有显示它,而实际上它显示了。
哎呀!
我正在尝试使用 FileReader 加载删除的文件,但如果文件不以一个结尾,则会将一个神秘的“\n”字符附加到文件中。
删除一个不以换行符结尾的文本文件,然后看到文件的最后一个字符将是“\n”(代码 10)。
let fileReader = new FileReader();
fileReader.onload = function(event) {
let lastChar = this.result.charCodeAt(this.result.length - 1);
document.querySelector("#last_char").innerText = lastChar;
document.querySelector("#length").innerText = this.result.length;
for (let i = 0; i < this.result.length; ++i) {
console.log(this.result.charCodeAt(i));
}
}
function drop(event) {
event.stopPropagation();
event.preventDefault();
var files = event.dataTransfer.files; //It returns a FileList object
for (var i = 0; i < files.length; i++) {
var file = files[i];
fileReader.readAsText(file);
}
}
* {
box-sizing: border-box;
}
html,
body {
height: 100%;
}
#drop_area {
width: 100%;
height: 50%;
border: 3px dashed #aaaaaa;
border-radius: 10px;
text-align: center;
}
<div id="drop_area" ondrop="drop(event)" ondragover="event.preventDefault()">drop a text file here</div>
<div>Last char:</div>
<div id="last_char"></div>
<div>Length:</div>
<div id="length"></div>
原来是Unix的东西,跟javascript一点关系都没有。似乎它总是以换行符结束,无论你是否插入它,无论你的编辑器是否显示它。所以发生的事情是我认为我的文件没有换行符,因为我的编辑器没有显示它,而实际上它显示了。
哎呀!