Open a file for writing, creating it if necessary.
(&self, path: &str, inode: Inode)
| 288 | |
| 289 | /// Open a file for writing, creating it if necessary. |
| 290 | fn write_file(&self, path: &str, inode: Inode) -> Result<Self::Writer, Self::Error> { |
| 291 | let abs_path = self.resolve_path(path)?; |
| 292 | |
| 293 | // Create parent directories |
| 294 | if let Some(parent) = abs_path.parent() { |
| 295 | if !parent.exists() { |
| 296 | fs::create_dir_all(parent)?; |
| 297 | } |
| 298 | } |
| 299 | |
| 300 | let file = OpenOptions::new() |
| 301 | .write(true) |
| 302 | .create(true) |
| 303 | .truncate(true) |
| 304 | .open(&abs_path)?; |
| 305 | |
| 306 | Ok(FileWriter::new(file, abs_path, inode)) |
| 307 | } |
| 308 | } |