• ベストアンサー

VB6「コピー中のファイルをオープンしてinput #はするか?

VB6 WinXP等 ですが、(おそらくOSが)コピーしているファイルに対して(コピー先のファイル)をOPENしてinput #はするか(しないか)どうか疑問なのですが。当然、コピー先のファイルはコピー中なら不完全なので、OPENしてinput してしまうと不都合が生じるので。別のプロセスで開かれている場合はエラーが出るというですが・・・。大きなテキストファイルを作って自力でテストする必要があるでしょうか?OSの仕様に詳しいかたよろしくおねがいいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • wolf03
  • ベストアンサー率22% (241/1086)
回答No.1

オープン時にロックかければよい。 コピー中のファイルはロックできずオープンエラーになる。

lord_chan
質問者

お礼

テストしてみました、inputモードでOPENするとエラー70が出ました。つまり読み込みはしない(できない)ということでOKなようですね。

lord_chan
質問者

補足

ありがとうございます。コピー中のファイルは全てのモードでオープン(OPEN)できないということでしょうか?(読込のみなのでモードはinputです。ロックしてしまうとコピーがこけそう・・・)この仕様はマイクロソフトのサイトに記載されていますか?ちなみにURLをおしえていただけると幸いです。

関連するQ&A

  • ファイルのコピー(VBにて)

    OS:windows2000pro VB:VB6.0sp5 元ファイル場所:"C:\work_from\データ050512.csv 元ファイル  :"データ050512.csv" コピー先場所:"C:\work_to 条件1.コピー先に元ファイルと     同じ名前のファイルが存在する場合      →上書きとする 条件2.コピー先に元ファイルと     同じ名前のファイルが存在し     ファイルがアクセス中(開かれている状態)の場合      →コピー先のファイルは、       他からアクセスされる可能性が有       これを考慮して下さい。       アクセス中のファイルはアクセス中は更新(コピー)       されなくても問題ないかと考えています 以上、初歩的なご質問で申し訳御座いません。 よろしくお願いいたします

  • VB バックアップとしてファイルをコピーしたい

    VBでアイコンをクリックして実行したいのですが、教えください。 フォルダー名をインプットする そのフォルダー名で新規作成する ファイルをそのフォルダーにコピーする 終了   よろしくお願いします。

  • VB Input#でstringを読込む時の区切り

    お世話になります。 VBのInput#でテキストファイルの中の単語をString型変数に読み込むときの、1項目の区切りを教えてください。 たとえば、テキストファイルsample.txtの中身が 1 aaa bbbb であったとします。 dim i1 as integer dim s1(2) as string に対して i1=1 s1(0)="aaa" s1(1)="bbbb" となるようにしたいのですが、 open "sample.txt" for input as #1 input #1,i1 input #1,s1(0) input #1,s1(1) で読み込もうとすると、 s1(0)="aaa bbb" のように、空白も文字列の一部とみなされて切り替えてくれません。 区切りを空白から改行にして、テキストファイルの中身を 1 aaa bbb のようにすれば、一応は思ったとおりに動いてくれますが、これはこれでテキストの見栄えが悪いので、最終の手段として。 上記の例は簡単にしていますが、本当は同じような読み込む内容を何行か書いており できたら読み込むグループは1行にまとめたいのですが、 何か方法はありませんでしょうか?

  • VB6.0 ファイル操作

    教えて下さい VB6.0環境下でのファイル操作ですが、 テキストファイルの一部を書き換えたいのですが、それを行う手法を教えて下さい。 ファイルの中身をすべてINPUTして書き換えてWRITEする方法ではなく、その一部分だけを書き換えたいのですが、教えて下さい。

  • vb2008 テキストファイルを開くには?

    vb2008 テキストファイルを開くには? VB2008を使用している者です。今回もアドバイス宜しくお願い致します。 あるテキストファイルをOPENしたいと思っているのですが、やり方がわかりません。 VB2008でファイルを開く方法として一般的なのがOpenFileDialogを使用した方法ですが、 これだといちいち開きたいファイルを指定しなければなりません。その都度ファイルを 指定するのではなく、開きたいファイルをピンポイントで開きたいのです。 いろいろ検索しましたが、全くヒットしませんでした。 皆様のご指導、宜しくお願い致します。

  • VB2008のプロジェクトファイル名

    VB2008であるプロジェクトをコピーして別のプロジェクトにしたいのですがどうすればいいでしょうか? VB6の頃でしたら「名前を付けてプロジェクトの保存」というメニューがあったのですがVB2008にはなさそうです。 フォルダーごとコピーしてもexe名とかは変えられてもソリューションファイル「*.sln」のファイル名を変えると起動しないようですし、ご存知のかたがおられたらお願いします。

  • VB2005 でCSVファイルの読み込み

    VisualBasic2005でカンマ区切りのcsvファイルを読み込み、各項目を配列に取り込みたいのですが、どうすればいいのですか? VB6の時のように書くとエラーになります。 VB2005にはopen命令はないみたいですね。 Open ファイル名 For Input As #1 input #1,s(1),s(2),s(3) close #1 ちなみにcsvファイルの内容は "会社名(co.xxx,sss)","工場名","製品名(aaa,xxx)" のように各項目中にカンマやピリオドが入っています。 VB6はVBAではダブルコーテーションで囲めば正常に読み込めました。 どなたか教えて下さい。よろしくお願いします。

  • VB6.0 でのテキストファイルの表示

    .net では、readstream でがばっととって、テキストボックス(読み取り専用)に表示しました。 これと同様のことをVB6.0でチャレンジしたのですが、テキストボックスに表示されるのは最初の一行だけでした。マルチラインのテキストボックス設置後 Private sub command1_click() Dim data as string Open "ファイルパス" for input as #256 Do while EOF(256) line input #256, data loop text1.text=data としたところ、ファイル内の最初の一行目に位置する「%」のみが表示されました。 readonlyもつかえないみたいなので、Listを使うのがよいのでしょうか?ご教示下さい

  • VB6 「Line Input」でのリークについて

    VB6での「Line Input」命令使用時のメモリリークについて教えて下さい。 1分毎に3600行のCSVファイルを読み込むプログラムを作成しています。  (CSVファイルは1行500文字程度) 以下の【パターン1】は作成したプログラムの1部ですが、 (1)を3600回ループ時にパフォーマンスモニタでの「Private Bytes」が増加してしまいます。   (1ループ毎に増加せず、数十回ループする毎に増加します。) 試しに【パターン2】を作成し、CSVファイルはオープンのみ行い、 読み込みは行わずに、500文字の文字列が入った変数をコピーした場合は、 「Private Bytes」は増加しません。 基本的に違いは(1)と(2)の箇所だけなのですが、 「Line Input」命令の使用方法などで間違っている箇所があるのでしょうか? ご存知の方、教えて下さい。お願いします。 【パターン1】 Private Sub read_Timer() Dim i As Long Dim CsvDataBuf(3600) As String 'CSV読込み変数 Dim FP As Integer 'ファイル番号 (省略) : FP = FreeFile Open "C:\test.csv" For Input As #FP i = 0 Do While Not EOF(FP) And i <= (3600 - 1) Line Input #FP, CsvDataBuf(i)     ←(1) i = i + 1 Loop Close #FP : (省略) 【パターン2】 Private Sub read_Timer() Dim i As Long Dim CsvDataBuf(3600) As String 'CSV読込み変数 Dim tempBuf As String Dim FP As Integer 'ファイル番号 (省略) : tempBuf = "~500文字の文字列~" FP = FreeFile Open "C:\test.csv" For Input As #FP i = 0 Do While Not EOF(FP) And i <= (3600 - 1) CsvDataBuf(i) = tempBuf       ←(2) i = i + 1 Loop Close #FP : (省略)

  • fopenでファイルがオープンできません

    $fp = fopen(TEST_FILE, "w") としてオープンしようとすると Warning: fopen(mybasic9.txt): failed to open stream: No such file or directory と、オープンしようとしたファイルがない、と出ます そして、そのファイルをあらかじめ作っておくと OKです。 しかし fopen(TEST_FILE, "w") は該当ファイルがあればそれをオープンし 無ければ、新しく作成する、とFopenの仕様に出ています。 これは、今使っているサーバーの問題でしょうか 何か、避ける方法はないでしょうか よろしくお願いします

    • 締切済み
    • PHP

専門家に質問してみよう