Skip to content

Commit 09e5012

Browse files
committed
读取文件实现
1 parent 668ba99 commit 09e5012

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

src/notes/kvs/src/kv.rs

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,26 @@ impl KVStore {
214214
}
215215
}
216216

217+
// 读取一个目录下的文件
218+
fn read_dir(path: &str) -> Result<Vec<String>> {
219+
// Rust 实现浏览文件
220+
let dirs: Vec<String> = std::fs::read_dir(path)?
221+
.flat_map(|res| -> Result<_> { Ok(res?.path()) })
222+
.filter(|path| path.is_file())
223+
.flat_map(|path| {
224+
path.file_name()
225+
.and_then(OsStr::to_str)
226+
.map(|s| s.to_string())
227+
})
228+
.collect();
229+
dbg!(&dirs);
230+
Ok(dirs)
231+
}
232+
217233
#[cfg(test)]
218234
mod tests {
235+
use std::fmt::Result;
236+
219237
use super::*;
220238

221239
#[test]
@@ -244,16 +262,23 @@ mod tests {
244262

245263
#[test]
246264
fn test_serde() {
265+
// 通过 serde_json 可以实现“流”方式的贪婪匹配对象(反序列化)
247266
let data = b"[10] [1] [2]";
248267
let de = serde_json::Deserializer::from_slice(data);
249268
let mut stream = de.into_iter::<Vec<i32>>();
250-
dbg!(stream.byte_offset());// 0
269+
dbg!(stream.byte_offset()); // 0
251270
dbg!(stream.next()); // Some([10])
252-
dbg!(stream.byte_offset());// 4
271+
dbg!(stream.byte_offset()); // 4
253272
dbg!(stream.next()); // Some([1])
254273
dbg!(stream.byte_offset()); // 8
255274
dbg!(stream.next()); // Some([2])
256-
dbg!(stream.byte_offset());// 12
275+
dbg!(stream.byte_offset()); // 12
276+
}
277+
278+
#[test]
279+
fn test_read_dir() {
280+
let res = read_dir("./");
281+
dbg!(res);
257282
}
258283
}
259284

0 commit comments

Comments
 (0)