- {String} encode - 文件编码,默认为
utf8
- {Number} read_size - 总读取量,默认为
file.size
- {Number} concurrency - 并发读取数,默认为
1
- {Number} chunk_size - 每个分片大小,默认为
1 << 16
浏览器上的文件读取类,需要浏览器支持
FileReader
与
TypedArray
类
- {File} file
- {ReaderOptions} [options]
- readAsText():
BrowserFileReader
- readAsArrayBuffer():
BrowserFileReader
- readAsDataURL():
BrowserFileReader
- read():
BrowserFileReader
- next():
BrowserFileReader
- slice(start, end):
BrowserFileReader
- done():
boolean
- validate(record, sequence):
boolean
- result(record, sequence):
*
- isLastSnippet(record, sequence):
boolean
import { BrowserFileReader } from 'next-reader'
const target = document.querySelector('#file')
target.onchange = () => {
const file = target.files[0]
const reader = new BrowserFileReader(file)
reader.subscribe(
(data, sequence) => console.log('onNext::', data, sequence),
(error, already, read_size) => console.log('onError::', error, already, read_size),
() => console.log('onCompleted')
)
reader.read() // same as reader.readAsArrayBuffer()
// or
reader.readAsArrayBuffer()
// or
reader.readAsText()
// or
reader.readAsDataURL()
}
Mixin ReaderOptions
- {Boolean} ignore_line_break - 输出结果是否忽略换行符,默认为true
按行读取一个文件,输出结果为unsigned 8 bit
类型
- {File} file
- {LineReaderOptions} [options]
- read():
ReadLineAsUint8
- resume():
ReadLineAsUint8
- pause():
ReadLineAsUint8
- Type
- {String} line
- {String} lines
import { ReadLineAsUint8 } from 'next-reader'
const Type = ReadLineAsUint8.Type
const target = document.querySelector('#file')
target.onchange = () => {
const file = target.files[0]
const reader = new ReadLineAsUint8(file)
reader.subscribe(
(record) => {
const {type, no, size, data} = record
if (type === Type.lines) {
console.log(data.forEach(d => console.log(d)))
}else if (type ===Type.line) {
console.log(data, no, size)
}
},
(error, already, read_size) => console.log('onError::', error, already, read_size),
() => console.log('onCompleted')
)
reader.read()
}
- {File} file
- {LineReaderOptions} [options]
- read():
ReadLineAsUint8
- resume():
ReadLineAsUint8
- pause():
ReadLineAsUint8
- Type
- {String} line
- {String} lines
Simple 参考 ReadLineAsUint8 的example
- {File} file
- {LineReaderOptions} [options]
- read():
ReadLineAsUint8
- resume():
ReadLineAsUint8
- pause():
ReadLineAsUint8
import { ReadCsvAsUint8 } from 'next-reader'
const target = document.querySelector('#file')
target.onchange = () => {
const file = target.files[0]
const reader = new ReadCsvAsUint8(file)
reader.subscribe(
(record) => {
const { lines, size } = record
lines.forEach(record => {
console.log(record.fields, record.size, record.no)
})
console.log(size)
},
(error, already, read_size) => console.log('onError::', error, already, read_size),
() => console.log('onCompleted')
)
reader.read()
}
从第一行开始,读取file
指定lines
行,输出结果为通过utf8
解码后的string
- {File} file
- {Number} lines - 需要读取多少行
- {LineReaderOptions} [options]
- read():
ReadLineAsUint8
- resume():
ReadLineAsUint8
- pause():
ReadLineAsUint8
import { ReadCsvWithLines } from 'next-reader'
const target = document.querySelector('#file')
target.onchange = () => {
const file = target.files[0]
const reader = new ReadCsvWithLines(file, 100)
reader.subscribe(
(record) => {
const { lines, size } = record
let total = 0
lines.forEach(record => {
console.log('No. %s: %s .%s', record.no, record.fields.toString(), record.size)
})
console.log('total => %s, size => %s', total, size)
},
(error, already, read_size) => console.log('onError::', error, already, read_size),
() => console.log('onCompleted')
)
reader.read()
}