我正在尝试使用 disableDateList: Array<any> = [
'2018-08-01',
'2018-08-02',
'2018-08-03',
'2018-08-04',
'2018-08-05',
'2018-08-06',
'2018-08-15',
'2018-08-15',
'2018-10-15',
'2018-11-15',
'2018-12-15',
'2019-02-15',
'2019-11-05',
'2019-12-15'
];
myFilter = (d: Date): boolean => {
d = new Date(d);
let date: any;
let month: any;
if (d.getDate().toString().length < 2) {
date = '0' + d.getDate().toString()
} else {
date = d.getDate().toString()
}
if ((d.getMonth() + 1).toString().length < 2) {
month = '0' + (d.getMonth() + 1).toString()
} else {
month = (d.getMonth() + 1).toString()
}
const day = d.getFullYear().toString() + "-" + month + "-" + date;
return !this.disableDateList.includes(day);
}
进行下载二进制文件。
当OkHttp
为BUFFER_SIZE
时,文件将正确下载。
但是,当我将1
设置为BUFFER_SIZE
时文件被损坏。
将1024
设置为BUFFER_SIZE
时,文件下载需要很长时间
下面是代码段:
1
答案 0 :(得分:1)
如果您的BUFFER_SIZE在上次读取时未满,那么您将在文件中写入错误的数据:
你有
fileOutputStream.write(BUFFER_SIZE);
您应该拥有:
fileOutputStream.write(BUFFER_SIZE, 0, byteRead);
EDIT1:我也很乐意替换这部分代码:
while (true) {
int byteRead = inputStream.read(BUFFER_SIZE);
if (byteRead == -1) {
break;
}
采用更好的方法:
int byteRead;
while ( (byteRead = inputStream.read(BUFFER_SIZE)) > 0 ) {
答案 1 :(得分:0)
您的代码有点混乱,因为BUFFER_SIZE看起来像一个数字常量。除此之外,我认为您的问题在于fileOutputStream.write(BUFFER_SIZE)。在最后一次写入时,当byte []未“满”时,您仍将写入数组的全部内容。使用指定偏移量(0)和要写入的字节(byteRead。)的重载