unity顺序读取一个文件下的所有文本文档,不停断执行该代码,每0.1读取一次,每一次读取忽略前一次读取的文本,每读取一次,就将读取的文本文件里的数据汇总输入到指定的一个文本文档
时间: 2024-05-04 09:22:36 浏览: 107
unity文件存储与读写
以下是一个实现上述功能的Unity代码示例:
```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class TextFileReader : MonoBehaviour
{
public string directoryPath; // 要读取的文本文件所在的文件夹路径
public string outputFilePath; // 汇总输出数据的文本文件路径
public float readInterval = 0.1f; // 读取间隔时间
private List<string> fileNames = new List<string>(); // 文件名列表
private List<string> lines = new List<string>(); // 当前读取的文本文件中的所有行
private int currentIndex = 0; // 当前读取的行数索引
private StreamWriter outputFile; // 输出文件流
void Start()
{
// 获取文件夹中所有文本文件名
string[] files = Directory.GetFiles(directoryPath, "*.txt");
foreach (string file in files)
{
fileNames.Add(Path.GetFileName(file));
}
// 创建汇总输出文件
outputFile = new StreamWriter(outputFilePath, false);
// 开始读取文本文件
StartCoroutine(ReadTextFiles());
}
IEnumerator ReadTextFiles()
{
while (true)
{
// 读取文本文件
if (currentIndex < lines.Count)
{
// 将当前行的数据写入输出文件中
outputFile.WriteLine(lines[currentIndex]);
currentIndex++;
}
else
{
// 读取下一个文本文件
string fileName = fileNames[Random.Range(0, fileNames.Count)];
string filePath = Path.Combine(directoryPath, fileName);
lines.Clear();
using (StreamReader reader = new StreamReader(filePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
lines.Add(line);
}
}
currentIndex = 0;
}
yield return new WaitForSeconds(readInterval);
}
}
private void OnDestroy()
{
// 关闭输出文件流
if (outputFile != null)
{
outputFile.Close();
}
}
}
```
该代码实现了每隔0.1秒读取一个文件夹下的所有文本文件,并将每个文件中的数据汇总写入一个指定的文本文件中。其中,每次读取会忽略前一次读取的文本,而是从下一个文件开始读取。
阅读全文