js读取txt文件并拆分

1.HTML文件下(使用Live Server打开)

1.1 fetch

fetch('file.txt')
  .then(response => {
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    return response.text();
  })
  .then(text => {
    // 处理读取到的文本数据
    console.log(text);
  })
  .catch(error => {
    console.error('There has been a problem with your fetch operation:', error);
  });

1.2 XMLHttpRequest

const xhr = new XMLHttpRequest();
xhr.overrideMimeType("text/plain");
xhr.open('GET', 'file.txt', true);
xhr.onreadystatechange = function () {
  if (xhr.readyState === 4 && xhr.status === 200) {
    const text = xhr.responseText;
    // 处理读取到的文本数据
    console.log(text);
  }
};
xhr.send(null);

1.3 Axios

<script src="https://cdn.bootcdn.net/ajax/libs/axios/1.3.6/axios.js"></script>

axios.get('file.txt')
        .then(response => {
          console.log(response.data);
        })
        .catch(error => {
          console.error('Error reading the JSON file:', error);
        });

1.4 FileReader

// HTML中添加input标签,用于选择文件
<input type="file" id="fileInput">

<script>
  document.getElementById('fileInput').addEventListener('change', function(event) {
    const file = event.target.files[0];
    if (!file) {
      console.error('No file selected');
      return;
    }
    
    const reader = new FileReader();
    reader.onload = function(event) {
      const text = event.target.result;
      // 处理读取到的文本数据
      console.log(text);
    };
    reader.onerror = function(event) {
      console.error('Error reading the file:', event.target.error);
    };
    
    reader.readAsText(file);
  });
</script>

这段代码创建了一个FileReader对象,通过监听文件输入框的变化,当用户选择一个文件后,FileReader会读取文件内容并调用onload事件处理函数,在这个事件处理函数中,可以访问到读取的文本数据。

2.Node下

2.1 fs.readFile

使用 Node.js 的 fs 模块中的 readFile 方法可以读取文本文件的内容。这是一种异步方法,适用于小型文件。

const fs = require('fs');

fs.readFile('file.txt', 'utf8', (err, data) => {
  if (err) {
    console.error('Error reading the file:', err);
    return;
  }
  console.log(data);
});

2.2 fs.readFileSync

readFileSync 是 fs 模块中的同步方法,适用于小型文件。这种方法会阻塞整个程序的执行,直到文件读取完成。

const fs = require('fs');

try {
  const data = fs.readFileSync('file.txt', 'utf8');
  console.log(data);
} catch (err) {
  console.error('Error reading the file:', err);
}

2.3 readline 模块

readline 模块可以逐行读取文本文件,适用于大型文件,可以减少内存的占用。

const fs = require('fs');
const readline = require('readline');

const readStream = fs.createReadStream('file.txt', 'utf8');
const rl = readline.createInterface({
  input: readStream,
  crlfDelay: Infinity // 确保逐行读取,不会出现文本数据被截断或者分段的情况
});

rl.on('line', (line) => {
  console.log(line);
});

rl.on('close', () => {
  console.log('File reading finished');
});

2.4 stream

可以使用 Node.js 中的 stream,它可以逐块读取大型文件,降低内存占用。这种方法适合处理大型文件。

const fs = require('fs');

const readStream = fs.createReadStream('file.txt', 'utf8');

readStream.on('data', (chunk) => {
  console.log(chunk);
});

readStream.on('end', () => {
  console.log('File reading finished');
});

readStream.on('error', (err) => {
  console.error('Error reading the file:', err);
});

3.拆分

const lines = text.split(/\r\n|\n|\r/); // 使用正则表达式分割文本

// 遍历每一行内容
lines.forEach(line => {
  console.log(line);
});
// 遍历每一行内容
lines.forEach(line => {
  // 根据空格拆分每一行内容
  const words = line.split(' ');

  // 输出每一行拆分后的单词数组
  console.log(words);
});

在 JavaScript 的 forEach 方法中,使用 return 无法像普通的 for 循环那样跳出循环。return 在 forEach 中只是用于退出当前迭代函数,并不能终止整个循环。

如果想在某些条件下跳过当前迭代,可以使用 return 来继续下一次迭代,但无法完全中断 forEach 循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值