From 5fb7014c2b37cfbd4f617ddf0ba6c892770ddcd7 Mon Sep 17 00:00:00 2001 From: electricboogie <32370782+electricboogie@users.noreply.github.com> Date: Sun, 25 Apr 2021 15:42:36 -0500 Subject: [PATCH] Add a BufWriter for writes out to temp files --- src/uu/sort/src/external_sort/mod.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/uu/sort/src/external_sort/mod.rs b/src/uu/sort/src/external_sort/mod.rs index f5a3a03af..222da5b58 100644 --- a/src/uu/sort/src/external_sort/mod.rs +++ b/src/uu/sort/src/external_sort/mod.rs @@ -4,7 +4,7 @@ use std::collections::VecDeque; use std::error::Error; use std::fs::{File, OpenOptions}; use std::io::SeekFrom::Start; -use std::io::{BufRead, BufReader, Seek, Write}; +use std::io::{BufRead, BufReader, BufWriter, Seek, Write}; use std::marker::PhantomData; use std::path::PathBuf; @@ -232,12 +232,14 @@ where } fn write_chunk(&self, file: &PathBuf, chunk: &mut Vec) -> Result<(), Box> { - let mut new_file = OpenOptions::new().create(true).append(true).open(file)?; + let new_file = OpenOptions::new().create(true).append(true).open(file)?; + let mut buf_write = Box::new(BufWriter::new(new_file)) as Box; for s in chunk { let mut serialized = serde_json::to_string(&s).expect("JSON write error: "); serialized.push_str("\n"); - new_file.write_all(serialized.as_bytes())?; + buf_write.write(serialized.as_bytes())?; } + buf_write.flush()?; Ok(()) }