2014-09-08 4 views
0

녹 0.11텍스트 파일을 올바르게 읽는 방법?

초보자 질문 :

fn main() {                  
    use std::io::File;               
    use std::str;                

    let unwrapped_data = match File::open(&Path::new("/proc/net/dev")).read_to_end() { 
     Ok(byte_mas) => byte_mas,            
     Err(why) => fail!("couldn't open: {}", why.desc),      
    };                   

    println!("{}", str::from_utf8_owned(unwrapped_data));      
} 

출력 :

./netstat 
Ok(Inter-| Receive            | Transmit 
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed 
    lo: 1534066 17270 0 0 0  0   0   0 1534066 17270 0 0 0  0  0   0 
enp2s0: 251195693 592728 0 17723 0  0   0   0 43664332 107083 0 0 0  0  0   0 
) 

어떻게 '확인()'없이 읽을 수? 자세한 자세한 자세한 자세한 자세한 자세한 자세한 자세한

+0

(당신은 '세부 사항'실제로 제공하지 않고 여러 번 반복해야하는하셨습니까 더 자세한 내용은?) – huon

답변

0

from_utf8_owned 서명이 있습니다

입니다
pub fn from_utf8_owned(vv: Vec<u8>) -> Result<String, Vec<u8>> 

, 그것은 바이트 인 경우 (문자열을 바이트의 벡터를 받아, 반환 유효한 utf8 시퀀스) 또는 원본 벡터 (그렇지 않은 경우)를 사용하므로이 가능한 오류를 처리해야합니다. 하나의 가능성은 다음과 같습니다

match str::from_utf8_owned(unwrapped_data) { 
    Ok(s) => println!("{}", s), 
    Err(_) => fail!("file was not valid UTF-8") 
} 

당신이 가지고있는 코드가 "작동"그 이유는 Result는 (어떤 {} 포맷터 전화 임) Show 특성을 구현하고, 그래서 직접 인쇄 할 수 있습니다.

은 (실제로는 내부적으로 UTF-8인지 아닌지 전체 리더와 검사를 읽고 Reader.read_to_str 통해이 과정을 생략 할 수 있습니다.)

관련 문제