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

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

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

バイナリファイルについて


(過去ログ 2 を表示中)

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

■1712 / inTopicNo.1)  バイナリファイルについて
  
□投稿者/ 神無 二等兵(1回)-(2005/10/24(Mon) 20:52:15)

分類:[VB.NET] 


分類:[VB.NET] 

こんばんは、はじめて書き込みさせていただきます。

現在、皆様に教えていただきたい事があり書き込みました。

バイナリファイルの事なのですが、
下記のサイト様でテキストファイルのバイナリファイル方法は理解できたのですが、
http://shinshu.fm/MHz/88.44/archives/0000028163.html

MDBファイルを 容量 15000ずつで区切り、バイナリファイルとして読み込む
方法を探しています。
どなたか教えていただけませんでしょうか?
宜しくお願いします。



0
引用返信 編集キー/
■1713 / inTopicNo.2)  Re[1]: バイナリファイルについて
□投稿者/ 魔界の仮面弁士 中尉(36回)-(2005/10/24(Mon) 20:56:22)

分類:[VB.NET] 

> テキストファイルのバイナリファイル方法は理解できたのですが、
すみません。質問にある「バイナリファイル方法」という言葉の意味がわかりません…。

> MDBファイルを 容量 15000ずつで区切り、バイナリファイルとして読み込む
> 方法を探しています。
読み込むだけで良いのであれば、System.IO.BinaryReader クラスの
ReadBytes メソッドを使う事ができるかと思います。


0
引用返信 編集キー/
■1715 / inTopicNo.3)  Re[2]: バイナリファイルについて
□投稿者/ 神無 二等兵(2回)-(2005/10/25(Tue) 00:31:48)

分類:[VB.NET] 

こんな時間にすみません。
おへんじありがとうございます。

No1713に返信(魔界の仮面弁士さんの記事)
> > テキストファイルのバイナリファイル方法は理解できたのですが、
> すみません。質問にある「バイナリファイル方法」という言葉の意味がわかりません…。

すみません、日本語変ですよね。
正しくは、テキストファイルの読み込み、書き込み方法ですよね。。。
間違っていたらすみません・・・。
バイナリファイルという言葉をVB.NETをはじめて1ヶ月
はじめてその単語に行き当たったのでオカシナ点が沢山あり、お手数お掛けしました。すみません。

>>MDBファイルを 容量 15000ずつで区切り、バイナリファイルとして読み込む
>>方法を探しています。
> 読み込むだけで良いのであれば、System.IO.BinaryReader クラスの
> ReadBytes メソッドを使う事ができるかと思います。

助言有難うございます。
System.IO.BinaryReader クラスの ReadBytes メソッドをキーワードに
やってみたいと思います。
ありがとうございました。

0
引用返信 編集キー/
■1716 / inTopicNo.4)  Re[3]: バイナリファイルについて
□投稿者/ トラの尻尾しましま 二等兵(3回)-(2005/10/25(Tue) 12:28:59)

分類:[VB.NET] 

始めにお詫びを・・・。
名前は( 神無 です。 すみませんです。)
トラの尻尾しましまに変更します。お騒がせしました.

こんにちは・・・
教えていただいたのですが・・・

'バイナリファイル
Public Overridable Function ReadBytes(ByVal count As Integer) As Byte()
count'区切りサイズ
End Function
を利用することは分かったのですが、
それから、どうファイル名を指定してどう区切りサイズごとに区切っていけば言いのかわかりません・・。

File.Open("...", FileMode.Open, FileAccess.Read)
↑とかは使用しないのですか???
すみません、無知で。


0
引用返信 編集キー/
■1719 / inTopicNo.5)  Re[4]: バイナリファイルについて
□投稿者/ 魔界の仮面弁士 中尉(37回)-(2005/10/25(Tue) 14:15:48)

分類:[VB.NET] 

> それから、どうファイル名を指定してどう区切りサイズごとに区切っていけば言いのかわかりません・・。
ファイル自体は、System.IO.FileStream クラスにて開いておき、それを
BinaryReader クラスのコンストラクタに指定すれば OK です。
http://www.microsoft.com/japan/msdn/library/ja/vbcn7/html/vaconaccessthroughbinaryreaderbinarywriterclasses.asp

細かい点を端折って書くと、
Dim X As New BinaryReader(New FileStream(ファイル名, モード))
Dim B() As Byte = X.ReadBytes(15000)
X.Close
という感じかな?


> File.Open("...", FileMode.Open, FileAccess.Read)
> ↑とかは使用しないのですか???
File.Open() メソッドを使うこともできますよ。
そのメソッドは、FileStream クラスを返しますので。

0
引用返信 編集キー/
■1722 / inTopicNo.6)  Re[5]: バイナリファイルについて
□投稿者/ トラの尻尾しましま 二等兵(4回)-(2005/10/25(Tue) 18:41:19)

分類:[VB.NET] 

Dim fs As New BinaryReader(New FileStream("ファイル名", FileMode.Open))
'15000ごとにデータを区切る
Dim B() As Byte = fs.ReadBytes(15000)
'読み込んだByte配列をテキストに変換
Dim strBuf As String = System.BitConverter.ToString(B)


'データベースのコピー File.Copy(strBuf, コピー先, False)

としました。
それで、残り(??)容量をとってきたファイル名に"END"をつけたをしたいのですが、
Dim B() As Byte = fs.ReadBytes(15000)
で取ってきた残り(??)の容量はどうやってとってきたら良いのでしょうか・・・。

BinaryReader.ReadBytes メソッド は指定したバイト数分のバイトを読み取り、
指定したバイト数だけ現在位置を進めます。
とあったので、
で考えてみたのは
残りの容量 =ファイル総容量 - 現在どこまで取れてきているか

Dim nokori As Long
nokori = FileSize - B
と考えたのですが、うまくいきません・・・
考え方に問題があるのでしょうか・・・

よろしくお願い致します。






0
引用返信 編集キー/
■1723 / inTopicNo.7)  Re[6]: バイナリファイルについて
□投稿者/ まどか 中尉(37回)-(2005/10/25(Tue) 19:37:18)

分類:[VB.NET] 

> Dim B() As Byte = fs.ReadBytes(15000)
>
> 残りの容量 =ファイル総容量 - 現在どこまで取れてきているか
>
> nokori = FileSize - B
> と考えたのですが、うまくいきません・・・

Bは単なる変数なので
「- B」を「- Bのバイト数」という表現にしなくてはなりませんね。
Bの次にピリオドを打ってみてください。
そこで見当がつかなければ、ヘルプで「Arrayクラス」を調べてみてください。

FileSizeについては、ここ、じゃんぬねっとさんのTipsを見てみましょう。

0
引用返信 編集キー/
■1724 / inTopicNo.8)  Re[7]: バイナリファイルについて
□投稿者/ 中博俊 神(237回)-(2005/10/25(Tue) 22:06:24)
中博俊 さんの Web サイト

分類:[VB.NET] 

それより何がしたいんだろう。
ファイルのコピー?

0
引用返信 編集キー/
■1727 / inTopicNo.9)  Re[8]: バイナリファイルについて
□投稿者/ まどか 中尉(38回)-(2005/10/25(Tue) 23:37:43)

分類:[VB.NET] 

> それより何がしたいんだろう。

ファイル分割、、、かな?

0
引用返信 編集キー/
■1729 / inTopicNo.10)  Re[9]: バイナリファイルについて
□投稿者/ トラの尻尾しましま 一等兵(5回)-(2005/10/26(Wed) 09:47:44)

分類:[VB.NET] 

おはようございます。
お返事ありがとうございます。

> ファイル分割、、、かな?

そうなります。
Do While FileSize > 0 'データ総容量が0になるまで
'ファイル作成
Dim outfileName As String = "出力先ファイル名"
Dim outFile As New FileStream(outfileName, FileMode.Create, FileAccess.Write)

If FileSize >= freeSpace Then 'MDBファイルのサイズがドライブの空き容量より大きい
'ファイルを開く
Dim fs As New BinaryReader(New FileStream("ファイル名", FileMode.Open))
'15000ごとにデータを区切る
B = fs.ReadBytes(15000)

outFile.Write(B, 0, B.Length)

'データベースのコピー File.Copy(outfileName, 出力先ファイルパス, False)
Else
Dim nokori As Byte
nokori = FileSize - B.Length
outFile.Write(B, 0, nokori)

'ファイル最後にENDをつける
File.Move(outfileName, 出力先ファイルのパス & "END")


End If

count = count + 1

としました。
しかし、

『File.Copy(outfileName, A_Fname, False)』で

'System.NotSupportedException' のハンドルされていない例外が mscorlib.dll で発生しました。

追加情報 : 指定されたパスのフォーマットはサポートされていません。

なぜそうなったのか分かりません・・。

出力先に指定したパス名は下記です。

出力先ファイルパス = Drive & "DISK" & Format(count, "000") & "-" & System.DateTime.Now

ご指摘よろしくお願いします。

0
引用返信 編集キー/
■1730 / inTopicNo.11)  Re[10]: バイナリファイルについて
□投稿者/ トラの尻尾しましま 一等兵(6回)-(2005/10/26(Wed) 09:50:45)

分類:[VB.NET] 

追記、

> 'ファイル作成
> Dim outfileName As String = "出力先ファイル名"
> Dim outFile As New FileStream(outfileName, FileMode.Create, FileAccess.Write)
>
 
出力先ファイル名(パス) = "C:\TEST\out.txt"

です。

紛らわしくてすみません。

0
引用返信 編集キー/
■1731 / inTopicNo.12)  Re[11]: バイナリファイルについて
□投稿者/ トラの尻尾しましま 一等兵(7回)-(2005/10/26(Wed) 11:10:30)

分類:[VB.NET] 

すみません、原因はわかりました。
名前に日付を入れていたのと、肝心の拡張子がなかったのですよね・・

出力先ファイルパス = Drive & "DISK" & Format(count, "000") & "-" & System.DateTime.Now


それで、出力先パスを= Drive & "DISK" & Format(count, "000") & "-" & yymmddhhnnss.txt
にしたいのですが、
現在日付 System.DateTime.Now で yymmddhhnnssというふうに取り出したいのですが可能でしょうか??

例 A:\DISK001-2005/10/2611:10:43.txt  を
 
  A:\DISK001-20051026111043.txt にしたいのですが・・・。

よろしくおねがいします。

0
引用返信 編集キー/
■1732 / inTopicNo.13)  Re[10]: バイナリファイルについて
□投稿者/ 魔界の仮面弁士 中尉(38回)-(2005/10/26(Wed) 11:16:41)

分類:[VB.NET] 

> 『File.Copy(outfileName, A_Fname, False)』で
> 'System.NotSupportedException' のハンドルされていない例外が mscorlib.dll で発生しました。
> 追加情報 : 指定されたパスのフォーマットはサポートされていません。

指定したパスに問題があったりはしませんか?
極端な例を挙げるなら、
  File.Copy("C:\A.TXT", "CC:aaa.jpg", False)
などでも、同様のエラーが発生しますよね。


あと、提示されたコードでは、ファイルが閉じられていない点も気になります。
投稿の際に端折っているだけならば良いのですけれども。

0
引用返信 編集キー/
■1733 / inTopicNo.14)  Re[12]: バイナリファイルについて
□投稿者/ トラの尻尾しましま 一等兵(8回)-(2005/10/26(Wed) 12:26:04)

分類:[VB.NET] 


>指定したパスに問題があったりはしませんか?
>極端な例を挙げるなら、
>  File.Copy("C:\A.TXT", "CC:aaa.jpg", False)
>などでも、同様のエラーが発生しますよね。

はい、パスが間違っていました.
それで、日付の件も無事解決しました。お騒がせしました。

>あと、提示されたコードでは、ファイルが閉じられていない点も気になります。

すみません、ファイル自体を閉じていませんでした。
ご指摘ありがとうございます。


最終的に、ファイルを分割上手く出来ました!!!
皆様のおかげです。

私はどうしても、ファイルを閉じる事を忘れてしまっている傾向がありました。
今後気をつけます!!

ありがとうございました。



解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -