そしてファイルの内容を A Dim Mj_ReadMisc = New ArrayList Dim str As New System.IO.StreamReader(Mj_Read_Path & "\MISC\AUTPRINT.MRK", System.Text.Encoding.UTF8) 'ファイルの最後までループ Do Until str.Peek = -1 '1行づつ読込み、配列リストに格納 Mj_ReadMisc.Add(str.ReadLine & vbCrLf) Loop として読み込んでいます。
次に、このArrayListを次のように回して相対パスから絶対パスを作成してファイルの存在を確認し、ファイル名を取得しようとすると、エラーが出てしまいます。 B For i As Integer = 0 To Mj_ReadMisc.Count - 1 If CStr(Mj_ReadMisc.Item(i)).Length > 4 Then '(5文字以上あれば) 'ファイルパス If UCase(CStr(Mj_ReadMisc.Item(i)).IndexOf("IMG SRC")) >= 0 Then Dim Str As String = Mj_ReadMisc.Item(i).ToString() Dim st() As String = Str.Split("=") Dim temp As String = st(1).Replace("""", "") temp = temp.Replace(">", "") temp = temp.Replace("../", "") temp = Trim(temp) temp = Mj_Read_Path & "\" & temp
C ここではエラーが出ない Dim Exis as Boolen=My.Computer.FileSystem.FileExists(temp)
D ここでエラー Dim StrFile as string = System.IO.Path.GetFileName(temp)
E ・・・・リストに StrFile(ファイル名) 、Exis(存在の確認)を追加
End If Next
という具合なのですが、Dを解決するため Dim absolutePath As String = System.IO.Path.Combine(Mj_Read_Path, temp) とやってみても結果は同じです。
そこで 'ファイル名に使用できない文字を取得 Dim invalidChars As Char() = System.IO.Path.GetInvalidFileNameChars() If temp.IndexOfAny(invalidChars) >= 0 Then MsgBox(temp.IndexOfAny(invalidChars)) End If
とやってみると、いきなり1文字目で使用できないとのこと、 そこで、確認のため Dim StrFile as string = System.IO.Path.GetFileName(Mj_Read_Path) とやってみるとエラーは表示されません。 次に、結合前の状態で Dim StrFile as string = System.IO.Path.GetFileName(temp) とやると、4文字目(/)にエラーが出てしまいましたので、次のように temp = temp.Replace("/", " ") '一旦スペースで逃げる temp = temp.Replace(" ", "\") ’改めてパス記号を付与 と書き換えてみたのですが結果は同じエラーとなりました。