質問編集履歴

1

ご返信いただき、ありがとうございます。「試したこと」に、使用クレートを追記しました。また、少しコードを修正しました。

2021/12/30 13:35

投稿

m_osa
m_osa

スコア4

test CHANGED
File without changes
test CHANGED
@@ -40,15 +40,19 @@
40
40
 
41
41
 
42
42
 
43
- let mut outfile = File::create("test.csv");
43
+ let mut outfile =
44
44
 
45
+ BufWriter::new(fs::File::create("test.txt").unwrap());
46
+
45
- let reader = BufReader::new(text);
47
+ let mut reader = BufReader::new(text);
46
48
 
47
49
 
48
50
 
49
- for line in reader.lines() {
51
+ loop {
50
52
 
51
- let line = line.unwrap();
53
+ let mut buf = String::new();
54
+
55
+ let num_bytes = reader.read_line(&mut buf).unwrap();
52
56
 
53
57
 
54
58
 
@@ -56,7 +60,15 @@
56
60
 
57
61
 
58
62
 
63
+ if num_bytes == 0 {
64
+
65
+ break;
66
+
67
+ } else {
68
+
59
- writeln!(outfile, "{:?}", line);
69
+ outfile.write(buf.as_bytes()).unwrap();
70
+
71
+ }
60
72
 
61
73
  }
62
74
 
@@ -76,7 +88,27 @@
76
88
 
77
89
 
78
90
 
79
- let line = WINDOWS_31J.decode(line, DecoderTrap::Strict).unwrap();
91
+ let buf = WINDOWS_31J.decode(buf, DecoderTrap::Strict).unwrap();
92
+
93
+
94
+
95
+ ・使用したクレート
96
+
97
+ use std::fs;
98
+
99
+ use std::fs::File;
100
+
101
+ use std::*;
102
+
103
+ use std::io::{self, BufRead, BufReader, BufWriter, Write};
104
+
105
+ use std::path::Path;
106
+
107
+ use encoding_rs::SHIFT_JIS;
108
+
109
+ use encoding_rs_io::DecodeReaderBytesBuilder;
110
+
111
+
80
112
 
81
113
 
82
114