0
私は書き込みと読み取りに同じstd::fs::File
オブジェクトを使用しようとしていますが、読み取りは空の文字列を返します。同じファイルを読み書きに使用できますか?
私はflush
、sync_all
およびseek
にしようとしましたが、何も役に立たなかった。新しいFile
オブジェクトでは、ファイルを簡単に読み取ることができます。
const FILE_PATH: &str = "test.txt";
// Create file
let mut f = std::fs::File::create(FILE_PATH).unwrap();
f.write_all("foo bar".as_bytes());
f.seek(std::io::SeekFrom::Start(0));
// Read from the same descriptor
let mut content = String::new();
f.read_to_string(&mut content);
println!("{:?}", content); // -> ""
// Read from the other descriptor
let mut f = std::fs::File::open(FILE_PATH).unwrap();
let mut content = String::new();
f.read_to_string(&mut content);
println!("{:?}", content); // -> "foo bar"
「結果」のいずれかを処理しなかった/ログ/アンラップしましたが、おそらく問題を示していました。コンパイラの警告を無視しないでください! – Stefan
@Stefanさんへの通知ありがとう!実際のプログラムでは、コンパイラの警告を尊重する必要があります。しかし、このコードは、細部を気にすることなく、問題をはっきりと示すために必要なものでした。 –
'read_to_string'の結果をアンラップした場合、' 'ファイルの記述子が間違っています ''というエラーが表示されます。' 'flush'、' 'sync_all''と' 'seek''呼び出しに関わらず読み込みを望んでいません。エラーを解きほぐさずに結果に疑問を抱かせることは、私の目には「研究努力をしていない」ということです。したがって、実際のプログラムでは、エラーを処理する必要があります。例では、少なくとも結果をアンラップする必要があります。 – Stefan