- ベストアンサー
ファイルサイズを指定してファイルを作成したいのですが…(fsutilコマンド?)
はじめまして。 VB.NET 2003で、ファイルサイズを指定してファイルを作成したいのですが、実現に四苦八苦しております。 現在、コマンドプロンプトのfsutil file createnewコマンドをVBからshell関数で呼び出すことで実現はできたのですが、 (1)Windows XP以上のOSにしかfsutilコマンドが対応していない。 ⇒2000などで実現する方法を教えていただけないでしょうか?(fsutil.exeを2000にコピーする以外でお願いします。) (2)fsutilコマンドでデスクトップ上のフォルダにファイルが作成できない。 ⇒Dドライブには作成できるため、フォルダパスの権限の問題だと思うのですが、回避する方法が思いうかびません。 (デスクトップ上のフォルダは現行ログインユーザのDocument and Settings上のデスクトップなので、フォルダの権限を見ると書き込み可能になっているのですが、fsutilが独自の権限で動作しているもしくは、個人フォルダは他から参照できない設定にしていることが原因でしょうか?) ご回答いただけると助かります。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
FileStreamとBinaryWriterでってことではダメでしょうか? Dim fs as new FileStream( "ファイルパス", IO.FileMode.CreateNew Or IO.FileMode.Truncate) Dim bw As New IO.BinaryWriter(fs) Dim arByte() As Byte ' 10,000個の要素準備 ReDim arByte(9999) bw.Write(arByte) bw.Close() fs.Close() といった具合です 上書きされるのを防止するなら 先頭で dim fsinfo = new IO.FileInfo("ファイルパス") if fsinfo.Exists = false then Return などの処理を追加しましょう
その他の回答 (1)
- dsuekichi
- ベストアンサー率64% (171/265)
Binaryモードでファイルをオープンするのじゃ駄目なんでしょうか・・・ 例えば・・・ ---------------------------------------- Dim fn As Integer = FreeFile() Dim cnt As Integer Dim b As Byte = 0 cnt = 4096 FileOpen(fn, "C:\file.dat", OpenMode.Binary) Seek(fn, cnt) FilePut(fn, b) FileClose(fn) -------------------------------- #ファイルが存在する場合の処理は入れてません。
お礼
ご回答ありがとうございます。 質問後、いろいろと調べてみましたが、やはりプログラムするしかないみたいですね… サンプルプログラムまで載せていただきありがとうございました。
お礼
ご回答ありがとうございます。 shell(fsutil~)のようなあらかじめ用意されているライブラリがあればよかったのですが、やはり自前でプログラムするしかないみたいですね。 サンプルプログラムまで載せていただきありがとうございました。