質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

3661閲覧

VBのSystem.IO.FileStreamで2G以上のファイルを開きたい

lleldigm

総合スコア59

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2019/08/06 20:41

編集2020/05/20 04:06

いつもお世話になってます。
上記の件で質問です。

Dim br As New System.IO.FileStream(2GFilePath, IO.FileMode.Open, IO.FileAccess.Read)
2GFilePath部に2Gを超えるファイルを指定すると、

別のプロセスで使用されているため、プロセスはファイル 2GFilePath にアクセスできません。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
場所 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
場所 mdlClientInfo.GetRoServerList(String fFullPath, List1& ServerIpList, List1& ServerNameList)

と表示されます。
FileStreamの仕様で2G以上のファイルを開く場合、エラーが発生してしまうようです。
解決策があれば教えてほしいです。

追記
fileStreamの分を1行目に持ってきたところエラー内容が変わりました
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lleldigm

2019/08/06 22:24

別のプロセスで使用されていると表示されていますが、使用してません。ファイルサイズを挙げた場合にのみ発生しています。 また2G以上が読み込めない報告が多数上がっているため、ファイルサイズによる問題で間違いなさそうです。
YAmaGNZ

2019/08/06 22:50

FileStreamで4GBオーバーのファイルを開きましたが、特にエラーは発生しません。 プログラム内でそのファイルを他の部分で触っているとかないのでしょうか?
YAmaGNZ

2019/08/06 22:55

4GBオーバーのファイルを全部Readしてみましたが、こちらもエラーは発生しませんでした。 その現象が出るソースを提示して頂けると解決までの早道かと思います。
lleldigm

2019/08/06 23:02 編集

ソースの量が多いので開示は厳しいです。 Dim br As New System.IO.FileStream(2GFilePath, IO.FileMode.Open, IO.FileAccess.Read) この文章を1番最初に持ってきたところエラー内容が変わりました。 また、trycatchで囲っていたので、その部分も外してみるとエラーの場所も表示されました。 質問内容編集します
lleldigm

2019/08/06 23:04

こちらでも触っているプログラムと別に新規でFileStreamだけを行うプロジェクトを作成したのですが、開くことができました。対象ファイルは開くことができました。
y_waiwai

2019/08/06 23:15

あなたのコードのどこかですでに開いてるんでしょうね
lleldigm

2019/08/06 23:21

オーバーフローが複数個所起こっているようです。 FileStream自体がシンプルに2G開けないわけではなかったのですね、、
Zuishin

2019/08/06 23:36

だから、新しく作れって何度も言ってるのに。
Zuishin

2019/08/06 23:54 編集

> VBのSystem.IO.FileStreamで2G以上のファイルを開きたい この質問は解決したはずなので、解決済みにしてください。 「開くことができないというのは誤解によるもので、2GB のファイルは開くことができる」が結論になると思います。 演算のオーバーフローは全く別の問題で、その修正は自分でできるはずですが、万一できなかった場合にはきちんとコードを添えて第三者が解決可能な情報を十分に開示した上で改めて質問を立ててください。
Zuishin

2020/05/20 04:12

今更のこの編集は何の意味があるんですか?
guest

回答1

0

ベストアンサー

この例外は、ファイルのサイズ制限ではなく、既に他のプロセスから開かれているから開けないというものです。

一度再起動して、そのファイルを開いているプロセスを無くしてください。また、他のことを一切せずそのファイルを開くだけのプログラムを新しく作り、開けるかどうか確かめてください。

投稿2019/08/06 21:31

編集2019/08/06 23:43
Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lleldigm

2019/08/06 22:18

エラー自体はファイルが開かれていると表示されていますが、ファイルは開いてないんですよね。 ファイルサイズを上げた場合にのみ発生する現象です。
Zuishin

2019/08/06 22:24

ほかの部分で開いていたり、クローズされていなかったりする可能性があるので、回答に書いたようにほかのことを一切せずそのファイルを開くだけのプログラムを作って確かめてみてください。 また、こちらを試してみてください。 https://kiichi55.hatenadiary.org/entry/20120524/1337883064
Zuishin

2019/08/06 22:26

開いていないつもりで開いているという可能性を排除するために、上記は必ず行い、質問を編集してそのソースと結果を書いてください。
lleldigm

2019/08/06 22:31 編集

再起動かけて行っても同じ結果でした。 上記リンクに関してはusingの部分でファイルを開いていますが、VBではopenした段階でエラーが発生してしまいます。
Zuishin

2019/08/06 22:34

ほかのことを一切せず、そのファイルを開くだけのプログラムを作って確かめ、そのソースと結果を質問を編集して書いてください。
Zuishin

2019/08/06 22:35

上記二点、どちらか片方の一部だけではなく、両方の全部を行ってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問