欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS如何通过FileReader获取.txt文件内容

程序员文章站 2022-03-14 22:21:04
目录js通过filereader获取.txt文件内容读取.txt文件方法js: filereader()读取文件下面开始实际例子读取txt文件读取图片文件js通过filereader获取.txt文件内...

js通过filereader获取.txt文件内容

最近处理一个需求是,通过js解析.txt文件来做一些处理,在这里做一些总结。

读取.txt文件方法

var reader = new filereader();
var fileuploader = document.getelementbyid(“fileuploader”);//获取input框id来获取文件信息
reader.readastext(fileuploader.files[0],“utf-8”);//设置编码
reader.onload = function(){undefined
data.trim().split('\n').foreach(function(v, i){undefined
window[‘str' + (i+1)] = v
}
}
  • v是.txt中每行文本的内容
  • i是.txt中第几行

获取.txt文件总行数没有直接的方法可以调用,所以我这里用循环来处理:

var count =0;
data.trim().split('\n').foreach(function(v, i){undefined
count ++;
})

js: filereader()读取文件

filereader 对象允许web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 file 或 blob 对象指定要读取的文件或数据。

属性:

  • filereader.error 表示在读取文件时发生的错误
  • filereader.readystate
  • filerreader.result 读取到的结果

下面开始实际例子

index.html如下

<!doctype html>
<html lang="zh">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>filereader</title>
</head>
<body>
<input id="input" type="file">
</body>
</html>

demo.txt如下

this is a demo test

hello world

读取txt文件

<script>
  const input = document.queryselector('input[type=file]')
  input.addeventlistener('change', ()=>{
    const reader = new filereader()
    reader.readastext(input.files[0],'utf8') // input.files[0]为第一个文件
    reader.onload = ()=>{
      document.body.innerhtml += reader.result  // reader.result为获取结果
    }
  }, false)
  </script>

读取图片文件

<script>
  const input = document.queryselector('input[type=file]')
  input.addeventlistener('change', ()=>{
    console.log( input.files )
    const reader = new filereader()
    reader.readasdataurl(input.files[0]) // input.files[0]为第一个文件
    reader.onload = ()=>{
      const img = new image()
      img.src = reader.result
      document.body.appendchild(img)  // reader.result为获取结果
    }
  }, false)
  </script>

实例

import java.io.*;
public class fileread {
    public static void main(string args[]) throws ioexception {
        file file = new file("hello1.txt");
        // 创建文件
        file.createnewfile();
        // creates a filewriter object
        filewriter writer = new filewriter(file);
        // 向文件写入内容
        writer.write("this\n is\n an\n example\n");
        writer.flush();
        writer.close();
        // 创建 filereader 对象
        filereader fr = new filereader(file);
        char[] a = new char[50];
        fr.read(a); // 读取数组中的内容
        for (char c : a)
            system.out.print(c); // 一个一个打印字符
        fr.close();
    }
}

方法

方法定义 描述
abort():void 终止文件读取操作
readasarraybuffer(file):void 异步按字节读取文件内容,结果用arraybuffer对象表示
readasbinarystring(file):void 异步按字节读取文件内容,结果为文件的二进制串
readasdataurl(file):void 异步读取文件内容,结果用data:url的字符串形式表示
readastext(file,encoding):void 异步按字符读取文件内容,结果用字符串形式表示

事件

事件名称 描述
onabort 当读取操作被中止时调用
onerror 当读取操作发生错误时调用
onload 当读取操作成功完成时调用
onloadend 当读取操作完成时调用,不管是成功还是失败
onloadstart 当读取操作将要开始之前调用
onprogress 在读取数据过程中周期性调用

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。