...
This commit is contained in:
187
DriveInfo/모듈/Mod_Copy.vb
Normal file
187
DriveInfo/모듈/Mod_Copy.vb
Normal file
@@ -0,0 +1,187 @@
|
||||
Imports System.IO
|
||||
Imports System.Threading
|
||||
Imports System.Text
|
||||
|
||||
Module Mod_Copy '//파일이동 모듈파일
|
||||
|
||||
|
||||
Public Sub MoveFileRCopy(winhide As Boolean)
|
||||
Dim SrcFI As FileInfo = Nothing
|
||||
Dim DesFi As FileInfo = Nothing
|
||||
|
||||
Dim SrcFIp As String '//ft용 160328
|
||||
Dim Err As Boolean = False
|
||||
Dim isFTP As Boolean = False
|
||||
|
||||
If GetWorkDIr.StartsWith("ftp:/") Then isFTP = True
|
||||
|
||||
MDiMain.MSG("파일복사중...")
|
||||
Application.DoEvents()
|
||||
|
||||
Dim index As Integer = 0
|
||||
Dim endcnt As Integer = MDiMain.DataSet1.WorkList.Rows.Count - 1
|
||||
|
||||
If MDiMain.DataSet1.WorkList Is Nothing Then
|
||||
If winhide Then
|
||||
MDiMain.Noti("MoveFileRCopy" + vbCrLf + "파일목록이 없습니다")
|
||||
Else
|
||||
MsgBox("작업파일목록이 존재하지않습니다." & vbCrLf & "진행할 수 없습니다", MsgBoxStyle.Information, "확인")
|
||||
End If
|
||||
Return
|
||||
End If
|
||||
|
||||
Application.DoEvents()
|
||||
|
||||
For Each Dr As ireaDataSet.WorkListRow In MDiMain.DataSet1.WorkList.Rows
|
||||
index += 1
|
||||
|
||||
Application.DoEvents()
|
||||
|
||||
MDiMain.ShowCnt1(index, endcnt, "파일복사")
|
||||
If Dr.오류 <> "" Then
|
||||
Errlog("선오류감지되어서 넘어갑니다(" & Dr.오류 & ")")
|
||||
Else
|
||||
Dim 원본파일명 As String = Dr.원본경로 & "\" & Dr.원본파일명
|
||||
Dim 대상파일명 As String = Dr.대상경로 & "\" & Dr.대상파일명
|
||||
|
||||
If isFTP Then
|
||||
SrcFIp = 원본파일명.Replace("\", "/")
|
||||
SrcFIp = SrcFIp.Replace("//", "/")
|
||||
Else
|
||||
If isFileName(원본파일명) Then
|
||||
SrcFI = New FileInfo(원본파일명)
|
||||
Else
|
||||
Dr.성공 = "X"
|
||||
Dr.오류 = "원본파일명오류:" + 원본파일명
|
||||
Dr.EndEdit()
|
||||
Continue For
|
||||
End If
|
||||
End If
|
||||
|
||||
If isFileName(대상파일명) Then
|
||||
DesFi = New FileInfo(대상파일명)
|
||||
Else
|
||||
Dr.성공 = "X"
|
||||
Dr.오류 = "대상파일명오류:" + 대상파일명
|
||||
Dr.EndEdit()
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Application.DoEvents()
|
||||
|
||||
'//ftp상태일때는 원본 백업을 하지 않는다.
|
||||
If Not isFTP Then
|
||||
Try
|
||||
Check_Backup(SrcFI, BakTag)
|
||||
Catch ex As Exception
|
||||
PLog.Add(ex.Message, True)
|
||||
If winhide Then
|
||||
MDiMain.Noti("백업정책실패: " + ex.Message)
|
||||
Else
|
||||
MsgBox("백업정책(Check_Backup이 실패했습니다)" & vbCrLf & "Baktag=" & BakTag & vbCrLf & "오류내용:" & ex.Message.ToString, MsgBoxStyle.Information, "메일보내주세요")
|
||||
End If
|
||||
End Try
|
||||
End If
|
||||
|
||||
Application.DoEvents()
|
||||
|
||||
Try
|
||||
If Directory.Exists(DesFi.DirectoryName) = False Then
|
||||
Directory.CreateDirectory(DesFi.DirectoryName) '//대상폴더생성
|
||||
End If
|
||||
Catch ex As Exception
|
||||
|
||||
Dr.성공 = "X"
|
||||
Dr.오류 = "대상폴더생성실패:" + ex.Message
|
||||
Dr.EndEdit()
|
||||
|
||||
Errlog("대상폴더생성실패:" + DesFi.DirectoryName & vbCrLf + ex.Message.ToString)
|
||||
Continue For
|
||||
End Try
|
||||
|
||||
|
||||
If DesFi.Exists Then
|
||||
Dr.성공 = "△"
|
||||
Dr.오류 = "대상파일존재 넘어감"
|
||||
Dr.EndEdit()
|
||||
Else
|
||||
If isFTP Then
|
||||
Dim 재시도횟수 As Integer = 0
|
||||
FTPDOWN:
|
||||
Try
|
||||
FTP_0.Download(SrcFIp, DesFi.FullName, True)
|
||||
If System.IO.File.Exists(DesFi.FullName) Then
|
||||
Dim fi As New System.IO.FileInfo(DesFi.FullName)
|
||||
If fi.Length = 0 Then
|
||||
Dr.성공 = "X"
|
||||
Dr.오류 = "다운로드실패(0byte)"
|
||||
Dr.EndEdit()
|
||||
Else
|
||||
Dr.성공 = "O"
|
||||
Dr.오류 = ""
|
||||
Dr.EndEdit()
|
||||
Continue For
|
||||
End If
|
||||
Else
|
||||
Dr.성공 = "X"
|
||||
Dr.오류 = "다운로드실패(대상파일이없음)"
|
||||
Dr.EndEdit()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Dr.성공 = "X"
|
||||
Dr.오류 = "다운로드실패(예외:" + ex.Message + ")"
|
||||
Dr.EndEdit()
|
||||
End Try
|
||||
|
||||
Application.DoEvents()
|
||||
|
||||
|
||||
If Dr.성공 = "X" Then
|
||||
'//다운로드실패일때는 대상횟수로 연속 다운로드를 한다
|
||||
If 재시도횟수 < MaxRetryCount Then
|
||||
Dr.성공 = "■"
|
||||
Dr.오류 = String.Format("재시도({0}/{1})", 재시도횟수, MaxRetryCount)
|
||||
Dr.EndEdit()
|
||||
재시도횟수 += 1
|
||||
PLog.Add("재실행으로인한 지연시간")
|
||||
MDiMain.Noti(String.Format("FTP Download 오류(재시도:{0}/{1})" + vbCrLf + SrcFIp, 재시도횟수, MaxRetryCount))
|
||||
Form_Status.Refresh()
|
||||
Threading.Thread.Sleep(2000)
|
||||
GoTo FTPDOWN
|
||||
Else
|
||||
'//아무것도 하지않는다 이것은 오류이다.
|
||||
Err = True
|
||||
Continue For
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
Else
|
||||
|
||||
Try
|
||||
'//일반파일은 기존대로 사용하도록 한다.
|
||||
SrcFI.CopyTo(DesFi.FullName, True)
|
||||
Dr.성공 = "O"
|
||||
Dr.오류 = ""
|
||||
Dr.EndEdit()
|
||||
Catch ex As Exception
|
||||
Err = True
|
||||
Dr.성공 = "X"
|
||||
Dr.오류 = "일반파일복사오류:" + ex.Message.ToString()
|
||||
Dr.EndEdit()
|
||||
Continue For
|
||||
End Try
|
||||
|
||||
End If
|
||||
|
||||
Application.DoEvents()
|
||||
|
||||
End If
|
||||
End If
|
||||
|
||||
Next
|
||||
MDiMain.MSG("파일 [복사] 완료" & IIf(Err, "(일부파일에 오류가 발생하였습니다", ""))
|
||||
MDiMain.Noti("파일(복사)완료")
|
||||
End Sub
|
||||
|
||||
End Module
|
||||
Reference in New Issue
Block a user