アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして。
VB.NET 2003で、ファイルサイズを指定してファイルを作成したいのですが、実現に四苦八苦しております。

現在、コマンドプロンプトのfsutil file createnewコマンドをVBからshell関数で呼び出すことで実現はできたのですが、
(1)Windows XP以上のOSにしかfsutilコマンドが対応していない。
⇒2000などで実現する方法を教えていただけないでしょうか?(fsutil.exeを2000にコピーする以外でお願いします。)
(2)fsutilコマンドでデスクトップ上のフォルダにファイルが作成できない。
⇒Dドライブには作成できるため、フォルダパスの権限の問題だと思うのですが、回避する方法が思いうかびません。
(デスクトップ上のフォルダは現行ログインユーザのDocument and Settings上のデスクトップなので、フォルダの権限を見ると書き込み可能になっているのですが、fsutilが独自の権限で動作しているもしくは、個人フォルダは他から参照できない設定にしていることが原因でしょうか?)

ご回答いただけると助かります。
よろしくお願いいたします。

A 回答 (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
などの処理を追加しましょう
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
shell(fsutil~)のようなあらかじめ用意されているライブラリがあればよかったのですが、やはり自前でプログラムするしかないみたいですね。
サンプルプログラムまで載せていただきありがとうございました。

お礼日時:2007/09/27 13:18

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)
--------------------------------

#ファイルが存在する場合の処理は入れてません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
質問後、いろいろと調べてみましたが、やはりプログラムするしかないみたいですね…
サンプルプログラムまで載せていただきありがとうございました。

お礼日時:2007/09/27 13:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!