将字符串写入 data/data/包名/files

// 要保存的文件名

   private StringfileName ="xx";

   // 写入文件

    try {

         FileOutputStreamoutputStream = openFileOutput( fileName,Activity.MODE_PRIVATE);

         outputStream.write(result.getBytes());

         outputStream.flush();

         outputStream.close();

         System.out.println("done");

      } catch(FileNotFoundException e1) {

         // TODOAuto-generated catch block

         e1.printStackTrace();

      } catch (IOExceptione) {

         // TODOAuto-generated catch block

         e.printStackTrace();

      }

 

你可以使用外部排序算法来解决这个问题,因为数据量很大,无法一次加载到内存中进行排序。以下是一个基本的算法流程: 1. 将原始数据文件分割成多个较小的文件,每个文件的大小适合加载到内存中进行排序。你可以使用类似分割文件的方法,每个文件包含一定数量的行。 2. 对每个小文件进行排序,可以使用Python的内置函数`sorted()`或者其他排序算法实现。将排序后的结果写入临时文件中。 3. 合并排序后的小文件。可以使用归并排序的思想,逐个读取每个小文件中的数据行,按照字符顺序合并为一个新的大文件。在合并的过程中,每隔100000行将结果输出到一个新的文件中。 下面是一个示例代码,你可以根据实际情况进行调整和优化: ```python import os import heapq def split_file(input_file, chunk_size): with open(input_file, 'r') as f: lines = f.readlines() chunks = [lines[i:i+chunk_size] for i in range(0, len(lines), chunk_size)] for i, chunk in enumerate(chunks): output_file = f'temp_{i}.txt' with open(output_file, 'w') as f: f.writelines(chunk) def merge_files(input_files, output_file, interval): heap = [] with open(output_file, 'w') as out_f: file_handles = [open(f) for f in input_files] # Initialize heap with first line from each file for i, file_handle in enumerate(file_handles): line = file_handle.readline() if line: heapq.heappush(heap, (line, i)) count = 0 while heap: line, file_index = heapq.heappop(heap) out_f.write(line) count += 1 if count % interval == 0: out_f.flush() output_file = f'output_{count}.txt' print(f"Writing output_{count}.txt") line = file_handles[file_index].readline() if line: heapq.heappush(heap, (line, file_index)) else: file_handles[file_index].close() for file_handle in file_handles: file_handle.close() def sort_large_file(input_file, output_file, chunk_size, interval): split_file(input_file, chunk_size) input_files = [f'temp_{i}.txt' for i in range(len(os.listdir('.'))) if f'temp_{i}.txt' in os.listdir('.')] input_files.sort() merge_files(input_files, output_file, interval) for file in input_files: os.remove(file) # Example usage sort_large_file('data.txt', 'sorted_output.txt', 100000, 100000) ``` 上述代码将输入文件`data.txt`分割成多个小文件,每个文件包含100000行。然后对每个小文件进行排序,并最终合并为一个排序好的大文件`sorted_output.txt`。每隔100000行将结果输出到一个新的文件中。 请注意,这只是一个基本的实现示例,你可以根据实际情况进行调整和优化。例如,你可以使用更高效的排序算法、增加分割文件的数量等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值