ファイルの存在チェックを行い、
ファイルが存在する場合はファイルの内容を読み込みます。
Dim path As String = "D:\test.csv" '※D:\test.csvは存在するものとします。
'ファイルが存在するかどうか
Dim isExists As Boolean = System.IO.File.Exists(path)
Console.WriteLine("isExists:" & isExists)
'ファイル読み込み
If isExists = True Then
Dim line() As String = System.IO.File.ReadAllLines(path)
End If
ファイルパスの「途中」に改行コードを追加すると、System.IO.File.Exists()メソッドはfalseを返します。
なので、ファイル読み込みは行われません。
Dim path As String = "D:\" & Environment.NewLine & "test.csv"
ファイルパスの「末尾」に改行コードを追加すると System.IO.File.Exists()メソッドはtrueを返します。
なので、ファイル読み込みが行われるのですが、System.IO.File.ReadAllLines()メソッドは例外「ArgumentExceptionp:パスに無効な文字が含まれます。」をスローします。
Dim path As String = "D:\test.csv" & Environment.NewLine
結論
ファイル存在チェックとは別にファイルに不正な文字が含まれているかチェックする必要がある。
Dim path As String = "D:\test.csv" & Environment.NewLine
'パスに無効な文字が含まれていないか
Dim isInvalidChars As Boolean = (path.IndexOfAny(System.IO.Path.GetInvalidPathChars) <> -1)
Console.WriteLine("isInvalidChars:" & isInvalidChars)
'ファイルが存在するかどうか
Dim isExists As Boolean = System.IO.File.Exists(path)
Console.WriteLine("isExists:" & isExists)
'ファイル読み込み
If isExists = True AndAlso isInvalidChars = True Then
Dim line() As String = System.IO.File.ReadAllLines(path)
End If
0 件のコメント:
コメントを投稿