質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

2985閲覧

C# streamwriterクラスのwritelineメソッドについて

dera

総合スコア28

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2018/05/09 02:54

お世話になります。

表題の件ですが、対象のテキストファイル(DateTime.log)の
1行目に手で日付(例:2018/05/09 10:00:00)のように入力し、
保存してから下記のコードを実行します。

C#

1 //今日の日付を取得 2 DateTime nowTime = DateTime.Now; 3 4 //パスは実行ファイルと同階層に指定 5 string Path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\" + "DateTime.log"; 6 7 //取得した日付を保存する 8 using (StreamWriter sw = new StreamWriter(Path, true, Encoding.GetEncoding("UTF-8"))) 9 { 10 //追記 11 sw.WriteLine(nowTime .ToString("G")); 12 }

実行結果的には、
2018/05/09 10:00:00
2018/05/09 11:00:00(現在の時刻)

テキストファイルにはこのように2行目に書かれると思うのですが、
1行目を手打ちした場合に、
2018/05/09 10:00:002018/05/09 11:00:00
このように改行されず連続して書かれてしまう現象が時折発生しました。

何故、手打ちした時改行されないことがあるのかわからず、もやもやが消えないので、
もしこの現象について知っている方がいましたら、是非ご教示ください。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

改行コードや文字コードを変えて試してみましたが再現しませんでした。
手打ちということなら改行を入力し忘れていた可能性は排除できないと思います。

投稿2018/05/09 03:16

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2018/05/09 03:20

そもそも追加モードで開くということは OS レベルでファイルのバイト数分後ろにシークしてから書き込むことになるので勝手に改行が消えることは考えにくいですね。 バイナリファイルだったらファイルが壊れることになります。
dera

2018/05/09 06:40

そうですよね・・・。 多分よほど偶然の出来事だったのかと思います。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問