C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: XMLファイルの破損について


(過去ログ 149 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■86690 / inTopicNo.1)  XMLファイルの破損について
  
□投稿者/ M.S (4回)-(2018/02/27(Tue) 21:35:44)

分類:[.NET 全般] 

Visual Basic 2010
OS=Windows 10 IOT Enterpriseを使用して電源ぶち切り対策をしています。
ファイルの書き込みでファイルが壊れないようにしたいと思います。

質問
1,ハードディスク保護機能(UWF)を使用して電源ぶち切りでファイルがが壊れる可能性があるのは、どれに該当しますか?
 1.1 ファイルの移動 System.IO.File.Move("C:\test\1.txt", "C:\test\3.txt")
1.2 ファイルのコピー System.IO.File.Copy("C:\test\1.txt", "C:\test\2.txt", True)
1.3 XMLファイルの書き込み serializer.Serialize(sw, obj)
1.4 XMLファイルの読み込み serializer.Deserialize(sr),
1.4 XMLファイル名の変更 My.Computer.FileSystem.RenameFile("C:\test\a.txt", "b.txt")

2,ファイルの削除は、for文のループの回数が増えるとアプリケーションの負荷が増えますか?
My.Computer.FileSystem.DeleteFile("C:\test\1.txt")

3,ファイルの書き込みをローカルドライブD:\に保存すよりテンポラリフォルダにファイルを一旦作るほうが
項目1.3 serializer.Serialize(sw, obj)良いでしょうか?

Dim tmpDir As String = System.IO.Path.GetTempPath()


現在、電源ぶち切りでファイルが壊れるとNULL文字で埋められてしまいます。

現状の作りは、
元のXMLファイルがあればリネーム、その後、XMLファイルを一時フォルダに作成、ファイルの読み込み(is Nothing)が問題なければ元の保存場所に移動させています。
ファイルの読み込みに失敗すればリネームしたXMLファイルを再度、元の名前に戻しています。

どのように考えるといいのか教えてください。


引用返信 編集キー/
■86725 / inTopicNo.2)  Re[1]: XMLファイルの破損について
□投稿者/ kiku (36回)-(2018/03/04(Sun) 11:47:02)
IOTのOSを扱ったことがないので、
CE機でのアプリ開発の経験が少しある状況で、
自身の考えを書きたいと思います。

まずは、アプリ実行中は電源を切れないようにすることを考えます。
CE機のメーカのライブラリでは、電源ボタンを長押しして実際に電源が切れるまでの
長押し時間が設定できたため、これを30秒とか
かなり長い時間に設定することでこれを実現しました。
ライブラリでは、無限に設定することはできませんでした。
仮に無限に設定できてしまうと、
アプリのバグによる無限ループなどが発生した場合、
永久に電源が切れなくなることになるため、良い仕様かと思っています。

次に、バッテリー切れによる電源切断に関して考慮しました。
CE機のメーカのライブラリでは、バッテリー残量を取得できたため
この情報を元に定期的にバッテリー残量をチェックし、
少ない場合には、警告を表示して、アプリを終了するようにしました。

後、可能性としては、
アプリ実行中に、電源ボタンを30秒以上長押ししたときとか、
バッテリーを強制的に抜いたなどが考えられますが、
これは運用回避としました。
そんな使い方をしたら、アプリの動作を保証しないというものです。

ということで電源断によるファイル破損は考えませんでした。
考えなくて済むように考えたということでしょうか。

以上、参考になれば良いのですが。。。。

引用返信 編集キー/
■86729 / inTopicNo.3)  Re[1]: XMLファイルの破損について
□投稿者/ Jitta (367回)-(2018/03/05(Mon) 20:54:24)
No86690 (M.S さん) に返信

IoT でも Windows でもないですが。

書き込みに十分な時間電流を維持できるコンデンサを用意しています。
正規の口からの電流が途切れるとシグナルが上がり、退避を始めるようになっています。

一例ということで。

引用返信 編集キー/
■86738 / inTopicNo.4)  Re[2]: XMLファイルの破損について
□投稿者/ みい (81回)-(2018/03/07(Wed) 11:09:47)
おなじくIOT、XMLではありませんが、

ファイル名の後ろに日時付加
正常に書き込み終えたら古い日時がついたファイルは削除
起動時の読込はファイル検索して付加された日時ファイルが新しいから読込し
中身検証して正常であればそのデータを適用、他のファイルを消す

という処理をいれたことがあります。


引用返信 編集キー/
■86739 / inTopicNo.5)  Re[3]: XMLファイルの破損について
□投稿者/ M.S (5回)-(2018/03/07(Wed) 18:56:36)
No86738 (みい さん) に返信
> おなじくIOT、XMLではありませんが、
>
> ファイル名の後ろに日時付加
> 正常に書き込み終えたら古い日時がついたファイルは削除
> 起動時の読込はファイル検索して付加された日時ファイルが新しいから読込し
> 中身検証して正常であればそのデータを適用、他のファイルを消す
>
> という処理をいれたことがあります。
>
>
みいさんの考え方に近いですね。
引用返信 編集キー/
■86740 / inTopicNo.6)  Re[4]: XMLファイルの破損について
□投稿者/ M.S (6回)-(2018/03/07(Wed) 19:48:11)
質問に関して皆様方の経験で回答していただければ幸いです。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -