Я пытаюсь взять изображение, которое преобразуется в вектор байтов и записывать эти байты в новый файл. Первая часть работает, и мой код компилируется, но созданный новый файл заканчивается пустым (на нем ничего не написано). Что мне не хватает?Преобразование изображения в байты, а затем запись в новый файл
Есть ли более чистый способ конвертировать Vec<u8>
в &[u8]
, чтобы его можно было написать? То, как я сейчас делаю это, кажется, вроде смешно ...
use std::os;
use std::io::BufferedReader;
use std::io::File;
use std::io::BufferedWriter;
fn get_file_buffer(path_str: String) -> Vec<u8> {
let path = Path::new(path_str.as_bytes());
let file = File::open(&path);
let mut reader = BufferedReader::new(file);
match reader.read_to_end() {
Ok(x) => x,
Err(_) => vec![0],
}
}
fn main() {
let file = get_file_buffer(os::args()[1].clone());
let mut new_file = File::create(&Path::new("foo.png")).unwrap();
let mut writer = BufferedWriter::new(new_file);
writer.write(String::from_utf8(file).unwrap().as_bytes()).unwrap();
writer.flush().unwrap();
}