xifeng/document/
mod.rs

1use std::io;
2use std::io::prelude::*;
3use std::fs::{self, File};
4
5pub struct Document {
6    name: String,
7    date: Vec<u8>,
8}
9
10impl Document {
11    pub fn new(filename: &str) -> Self {    
12        Document {
13            name: filename.to_string(),
14            date: Vec::new(),
15        }
16    }
17    
18    pub fn read(&mut self) -> io::Result<()> {
19        let filename = &self.name;
20        let mut file = File::open(&*filename)?;
21        file.read_to_end(&mut self.date)?;
22        Ok(())
23    }
24    
25    pub fn rename(&mut self, filename: &str) {
26        self.name = filename.to_string();
27    }
28    
29    pub fn name(&self) -> String {
30        self.name.clone()
31    }
32
33	pub fn write(&mut self, filedate: Vec<u8>) {
34		self.date = filedate.clone();
35	}
36	
37    pub fn save(&self) -> io::Result<()> {
38        let filename = &self.name;
39        let mut file = File::create(&*filename)?;
40        file.write(self.date.as_slice())?;
41        Ok(())
42    }
43	
44	pub fn date(&self) -> Vec<u8> {
45		self.date.clone()
46	}
47	
48	pub fn date_as_string(&self) -> String {
49		String::from_utf8(self.date()).unwrap()
50	}
51	
52	pub fn kill(&self) -> io::Result<()> {
53		fs::remove_file(&*self.name())?;
54		Ok(())
55	}
56}