当前位置:首页 > 经验 >

id 的提取目录在哪里(id目录制作方法及步骤)

来源:原点资讯(www.yd166.com)时间:2023-10-31 10:51:04作者:YD166手机阅读>>

在Golang中,可以使用以下步骤将大文件分割为小文件,并重新组合合并

  1. 将大文件分割为多个临时文件(每个文件大小为1GB)
  2. 然后并发地从每个临时文件中提取ID,并将提取到的ID发送到一个通道中。
  3. 下来,通过等待所有提取ID的goroutine完成并关闭通道,将所有提取到的ID收集到一个切片中
  4. 最后,对切片进行倒序遍历,并将唯一的ID添加到一个新的切片中

func main() { FilePath := "path/to/your/file.txt" // 替换为实际文件路径 // 分割文件 chunks, err := splitFile(filePath) if err != nil { fmt.Printf("无法分割文件:%s\n", err) return } // 提取ID ids := extractIDs(chunks) // 合并并去重ID uniqueIDs := mergeAndDeduplicate(ids) // 输出结果 for _, id := range uniqueIDs { fmt.Println(id) } }

// 分割文件为多个临时文件

// 分割文件为多个临时文件 func splitFile(filePath string) ([]string, error) { const chunkSize = 1 * 1024 * 1024 * 1024 // 每个临时文件的大小(1GB) file, err := os.Open(filePath) if err != nil { return nil, fmt.Errorf("无法打开文件:%s", err) } defer file.Close() chunks := make([]string, 0) buffer := make([]byte, chunkSize) for i := 0; ; i { n, err := file.Read(buffer) if err != nil && err != io.EOF { return nil, fmt.Errorf("读取文件时出错:%s", err) } if n == 0 { break } chunkFilePath := fmt.Sprintf("temp_%d.txt", i) // 临时文件路径 chunkFile, err := os.Create(chunkFilePath) if err != nil { return nil, fmt.Errorf("无法创建临时文件:%s", err) } defer chunkFile.Close() _, err = chunkFile.Write(buffer[:n]) if err != nil { return nil, fmt.Errorf("写入临时文件时出错:%s", err) } chunks = append(chunks, chunkFilePath) } return chunks, nil }

// 提取ID func extractIDs(chunks []string) []int { var wg sync.WaitGroup wg.Add(len(chunks)) idsChan := make(chan int) for _, chunkFilePath := range chunks { go func(filePath string) { file, err := os.Open(filePath) if err != nil { fmt.Printf("无法打开文件:%s\n", err) wg.Done() return } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { line := scanner.Text() id, err := strconv.Atoi(line) if err != nil { fmt.Printf("无效的ID:%s\n", line) continue } idsChan <- id } wg.Done() }(chunkFilePath) } go func() { wg.Wait() close(idsChan) }() ids := make([]int, 0) for id := range idsChan { ids = append(ids, id) } return ids }

// 合并并去重ID func mergeAndDeduplicate(ids []int) []int { sort.Ints(ids) uniqueIDs := make([]int, 0) // 倒序遍历切片,将唯一的ID添加到uniqueIDs中 seen := make(map[int]bool) for i := len(ids) - 1; i >= 0; i-- { id := ids[i] if !seen[id] { uniqueIDs = append(uniqueIDs, id) seen[id] = true } } return uniqueIDs }

id 的提取目录在哪里,id目录制作方法及步骤(1)

id 的提取目录在哪里,id目录制作方法及步骤(2)

栏目热文

id复合路径的基本操作(id入门详细教程)

id复合路径的基本操作(id入门详细教程)

一、成品展示二、一些笔记三、总结1 建立复合路径 ctrl 8 取消 ctrl shift alt 82 使用复合路径期...

2023-10-31 11:16:38查看全文 >>

id目录怎么自动生成(id生成目录的方法)

id目录怎么自动生成(id生成目录的方法)

Typora导出的PDF目录标题自动加编号在Typora主题文件夹增加如下文件后,标题便自动加上了编号:https://...

2023-10-31 11:24:05查看全文 >>

id中怎么保存整个页面(id创建页面怎么在页面后显示)

id中怎么保存整个页面(id创建页面怎么在页面后显示)

分区类型ID是什么? 想要改变分区类型ID,先得明白分区类型ID是什么。大多数电脑用户可能只熟悉分区和分区类型,实际上有...

2023-10-31 11:32:52查看全文 >>

农业生产经营方式都有哪些(农业生产经营三种模式)

农业生产经营方式都有哪些(农业生产经营三种模式)

随着中国乡村振兴战略的持续推进,寻找一种适合农村发展的新型农业经营模式成为了当务之急。试行混合制农场,正是一种能够促进农...

2023-10-31 11:16:46查看全文 >>

农业生产经营方式的变化(我国农业生产经营简介)

农业生产经营方式的变化(我国农业生产经营简介)

改革开放四十多年,最大的变化是通过推进工业化,实现了城镇化的快速发展,尔后是农业现代化的不断深入。这个过程实现了小农户与...

2023-10-31 11:19:32查看全文 >>

id如何打包保存(id怎么单独导出一页)

id如何打包保存(id怎么单独导出一页)

一、maven概念 Maven是一个项目管理和整合工具。Maven为开发者提供了一套完整的构建生命周期框架。开发团队几乎...

2023-10-31 11:28:42查看全文 >>

id如何嵌入链接(id怎么自动生成链接)

id如何嵌入链接(id怎么自动生成链接)

InDesign简称“ID”,被称赞为行业领先的印刷和数字媒体布局和页面设计软件,拥有创建和发布书籍、数字杂志、电子书、...

2023-10-31 11:15:18查看全文 >>

id打包后还是链接缺失(id中缺失链接怎么解决)

id打包后还是链接缺失(id中缺失链接怎么解决)

用InDesign排版杂志或者画册如何保存文件?很多人会说不就是按下ctrl s吗?其实不然,在InDesign中如果你...

2023-10-31 10:48:50查看全文 >>

第一次产检的最佳时间(怀孕从哪天开始算日子)

第一次产检的最佳时间(怀孕从哪天开始算日子)

出现孕反应后,就要及时做第一次检查。一般,怀孕后都会有一些早孕反应,该来的例假没有来,还出现了头晕、嗜睡、食欲不振、厌油...

2023-10-31 10:55:45查看全文 >>

怀孕前三个月需要做什么检查(怀孕前三个月都要做什么检查)

怀孕前三个月需要做什么检查(怀孕前三个月都要做什么检查)

孕前必查项目1.血、尿常规检查血常规检查,主要是为了初步了解血液方面的情况,包括血红蛋白、血小板、白细胞、红细胞的计数等...

2023-10-31 11:14:44查看全文 >>

文档排行