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}