提示:【记事本】-你懂个der-分割记事本
前言
为了方便文件记事本分割麻烦产生的问题
提示:以下是本篇文章正文内容,下面案例可供参考
一、记事本是什么?
记事本是一种用于记录和保存文本信息的电子文档,它是一种简单的文本编辑工具,可以用来输入、编辑和保存文本信息。记事本通常不具备复杂的格式设置功能,只能实现基本的文本输入和保存操作。它在计算机上广泛应用,可以用来创建文本文件、编写程序代码、写日记等。
二、使用步骤
1.新建index.html文件
2.技术html/css/js
代码如下(示例):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>分割记事本小网页</title>
<style>
body {
background-color: #f7f7f7;
font-family: Arial, sans-serif;
}
.container {
max-width: 500px;
margin: 0 auto;
padding: 20px;
background-color: #fff;
border: 1px solid #ccc;
border-radius: 4px;
box-shadow: 10px 10px 10px #9a9c9e;
}
h2 {
text-align: center;
}
h4 {
text-align: center;
}
label {
display: block;
margin-bottom: 10px;
font-size: 16px;
}
input[type='file'] {
margin-bottom: 10px;
}
input {
width: calc(100% - 10px);
}
button {
display: block;
width: 100%;
padding: 10px;
font-size: 16px;
font-weight: bold;
color: #fff;
background-color: #007bff;
border: none;
border-radius: 4px;
cursor: pointer;
margin-top: 12px ;
}
#result {
margin-top: 20px;
padding: 10px;
background-color: #f7f7f7;
border: 1px solid #ccc;
border-radius: 4px;
}
.info {
text-align: center;
margin-bottom: 10px;
}
.notebook-link {
display: block;
margin-bottom: 10px;
font-size: 14px;
color: #007bff;
text-decoration: none;
transition: color 0.3s;
}
.notebook-link:hover {
color: #004cb3;
}
@media (max-width: 768px) {
.container {
max-width: 90%;
}
h1 {
font-size: 20px;
}
label {
font-size: 14px;
}
button {
font-size: 14px;
}
.notebook-link {
font-size: 14px;
}
}
.spinner {
margin: 20px auto;
width: 50px;
height: 50px;
border-radius: 50%;
border: 5px solid #f3f3f3;
border-top: 5px solid #3498db;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
</style>
</head>
<body>
<div class="container">
<h2>记事本数据分割</h2>
<h4>公众号:你懂个der</h4>
<label for="fileInput">选择记事本文件:</label>
<input type="file" id="fileInput" accept=".txt" />
<label for="size">输入每个记事本的数据条数:</label>
<input type="number" id="size" min="1" placeholder="按照多少条数据进行分解"/>
<label for="notebookName">输入记事本名称:</label>
<input type="text" id="notebookName" placeholder="记事本名称默认(notebook)" />
<label for="zipName">输入压缩包文件名称:</label>
<input type="text" id="zipName" placeholder="压缩包文件名称默认(all_notebooks)" />
<button οnclick="splitNotebooks()">分割记事本</button>
<div id="result"></div>
<div id="loading" style="display: none">
<h2>正在分割记事本,请稍候...</h2>
<div class="spinner"></div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.5.0/jszip.min.js"></script>
<script>
function splitNotebooks() {
var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];
if (!file) {
alert('请选择记事本文件');
return;
}
var allowedExtensions = ['.txt'];
var fileExtension = file.name.split('.').pop();
if (!allowedExtensions.includes('.' + fileExtension)) {
alert('请选择记事本文件(.txt)');
return;
}
var resultEl = document.getElementById('result');
resultEl.innerHTML = '';
showLoading();
var reader = new FileReader();
reader.onload = function (e) {
var content = e.target.result;
let lines = content.split('\n');
if (lines[0].trim() === '') {
lines.shift();
}
if (lines[lines.length - 1].trim() === '') {
lines.pop();
}
var size = Number(document.getElementById('size').value);
if (size < 1) {
alert('请输入每个记事本的数据条数');
hideLoading();
return;
}
var notebookCount = Math.ceil(lines.length / size);
var infoEl = document.createElement('p');
infoEl.className = 'info';
infoEl.innerText =
'一共解析了 ' + lines.length + ' 条数据,将数据分割成了 ' + notebookCount + ' 个记事本';
resultEl.appendChild(infoEl);
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var time = year + '-' + month + '-' + day;
var notebookName = document.getElementById('notebookName').value || 'notebook';
let zipName = document.getElementById('zipName').value;
if (zipName != null && zipName != '' && zipName != undefined) {
zipName = zipName + '_' + lines.length + '_' + time + '.zip';
} else {
zipName = 'all_notebooks_' + '_' + lines.length + '_' + time + '.zip';
}
var num = lines.length - size * (notebookCount - 1);
var zip = new JSZip();
for (var i = 0; i < notebookCount; i++) {
var notebookContent = lines.slice(i * size, (i + 1) * size).join('\n');
zip.file(
i + 1 + '_' + notebookName + '_' + (notebookCount == i + 1 ? num : size) + '.txt',
notebookContent
);
}
zip.generateAsync({ type: 'blob' }).then(function (content) {
var downloadLink = document.createElement('a');
var name = file.name.split('.').shift() || '记事本 '
downloadLink.href = URL.createObjectURL(content);
downloadLink.download = zipName;
downloadLink.innerText = `下载${notebookCount}个x${size}条数据的压缩包(${name}.zip)`;
downloadLink.className = 'notebook-link';
resultEl.insertBefore(downloadLink, resultEl.firstChild);
for (var i = 0; i < notebookCount; i++) {
var notebookContent = lines.slice(i * size, (i + 1) * size).join('\n');
var notebookLink = document.createElement('a');
notebookLink.href = URL.createObjectURL(
new Blob([notebookContent], { type: 'text/plain' })
);
notebookLink.download =
i + 1 + '_' + notebookName + '_' + (notebookCount == i + 1 ? num : size) + '.txt';
notebookLink.innerText = name + '_' + (i + 1);
notebookLink.className = 'notebook-link';
resultEl.appendChild(notebookLink);
}
hideLoading();
});
};
reader.readAsText(file);
}
function showLoading() {
var loadingEl = document.getElementById('loading');
loadingEl.style.display = 'block';
}
function hideLoading() {
var loadingEl = document.getElementById('loading');
loadingEl.style.display = 'none';
}
</script>
</body>
</html>
总结
这段HTML代码实现了一个简单的记事本分割小工具,通过用户在网页上选择记事本文件并输入相关参数后,可以将记事本内容按照指定的数据条数进行分割,并生成一个可以下载的压缩包文件,同时还提供每个分割后记事本的下载链接。网页的样式简洁清晰,功能实用,可以方便地进行记事本的分割和管理。