2011-03-22 3 views
0

VB.net을 사용하여 한 위치에서 다른 위치로 HTML 파일을 복사하려고합니다.
FileCopy, System.IO.File.Copy, My.Computer.FileSystem.CopyFile 중 하나를 사용할 때 파일과 관련된 이미지와 스크립트가 들어있는 "filename_files"폴더가 아닌 파일 만 복사합니다.관련된 모든 이미지 및 스크립트 폴더와 함께 HTML 파일을 복사하는 방법은 무엇입니까?

내가 뭘 프로그래밍 방식으로하고 싶은 것은이 모든 이미지와 스크립트없이 열립니다 b.html 내가 그 열기를 수행 할 때 b.html

로 다른 위치로 a.html 복사합니다.

Pls는이

+0

원본 위치에서 대상 위치로 수동으로 각 파일을 복사해야하며 원본 위치의 폴더 내에있는 파일을 복사하기 전에 대상 위치에 같은 이름의 폴더를 만들어야합니다. 파일 복사를 시작하는 것보다 – Kushal

+0

하지만 그것은 또한 src 태그가 있고 경로가 "oldfilename_files"폴더이므로 HTML 파일의 내용을 변경해야한다는 것을 의미합니다. 그렇게하는 방법? –

+0

대상 위치에 생성 할 폴더 이름이 소스 위치의 폴더 이름과 같으면 html 파일의 내용을 변경할 필요가 없습니다. 절대 경로 대신에 상대 경로를'src'에 지정했음을 명심하십시오 . – Kushal

답변

1

당신은 집단적으로 HTML 파일을 복사 FileCopy 내장 방법, 즉 따라서 스크립트와 이미지를 포함 폴더를 복사 할 수있는 두 가지 방법을 다음 사용할 수 있습니다 도움 및 방법 아래 사용하여 필요한 폴더를 복사합니다.

나는 이제 위의 방법을 사용하여

Public Function FileList(Mask As String) As String() 

    Dim sWkg As String 
    Dim sAns() As String 
    Dim lCtr As Long 

    ReDim sAns(0) As String 
    sWkg = Dir(Mask, vbNormal) 

    Do While Len(sWkg) 

     If sAns(0) = "" Then 
      sAns(0) = sWkg 
     Else 
      lCtr = UBound(sAns) + 1 
      ReDim Preserve sAns(lCtr) As String 
      sAns(lCtr) = sWkg 
     End If 
     sWkg = Dir 
    Loop 
    FileList = sAns 
End Function 

here에 지정된 경로에있는 파일의 배열을 반환하는 첫 번째 방법을 발견하고, 아래의 방법은, 당신은 소스 및 대상 경로를 지정하여 폴더를 복사 할 수 있습니다. 이 메소드는 폴더가 복사되었는지 여부를 지정하는 부울 값을 반환합니다.

Public Function FolderCopy(ByVal SourceFolder As String, ByVal TargetFolder As String) As Boolean 
    Dim flist() As String 
    Dim sURL As String = New String(SourceFolder) 
    Dim tURL As String = New String(TargetFolder) 
    Dim i As Integer 
    Dim slashpos As Long 
    If Not Directory.Exists(tURL) Then 

     slashpos = InStrRev(sURL, "\") 'Get position of last occurrence if '\' in given path 
     If slashpos <> sURL.Length Then 'Check if URL does not have slash at its end 
      sURL = sURL & "\" 'Add slash at URL end 
     End If 

     flist = FileList(sURL) 
     slashpos = InStrRev(tURL, "\") 'Get position of last occurrence if '\' in given path 
     If slashpos = tURL.Length Then 
      tURL = tURL.Substring(0, tURL.Length - 1) 
     End If 
     slashpos = InStrRev(tURL, "\") 

     Try 
      Directory.CreateDirectory(tURL) 
      For i = 0 To flist.Length - 1 
       FileCopy(sURL & flist(i), tURL & "\" & flist(i)) 
      Next 
      FolderCopy = True 
     Catch ex As Exception 
      FolderCopy = False 
     End Try 

    Else 
     FolderCopy = False 
    End If 
End Function 

하면 FolderCopy 방법을 사용하기 전에 클래스의 시작 부분에 Imports System.IO을 포함 있는지 확인하고,이 두 가지 방법을 포함해야합니다 있습니다.

0
' copy all files and subdirectories from the 
' specified source to the specified destination. 
Private Sub RecursiveCopyFiles(ByVal sourceDir As String, ByVal destDir As String, _ 
ByVal fRecursive As Boolean) 

    Dim i As Integer 
    Dim posSep As Integer 
    Dim sDir As String 
    Dim aDirs() As String 
    Dim sFile As String 
    Dim aFiles() As String 

    ' Add trailing separators to the supplied paths if they don't exist. 
    If Not sourceDir.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()) Then 
     sourceDir &= System.IO.Path.DirectorySeparatorChar 
    End If 

    If Not destDir.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()) Then 
     destDir &= System.IO.Path.DirectorySeparatorChar 
    End If 

    ' Recursive switch to continue drilling down into dir structure. 
    If fRecursive Then 
     ' Get a list of directories from the current parent. 
     aDirs = System.IO.Directory.GetDirectories(sourceDir) 

     For i = 0 To aDirs.GetUpperBound(0) 
      ' Get the position of the last separator in the current path. 
      posSep = aDirs(i).LastIndexOf("\") 

      ' Get the path of the source directory. 
      sDir = aDirs(i).Substring((posSep + 1), aDirs(i).Length -(posSep + 1)) 

      ' Create the new directory in the destination directory. 
      System.IO.Directory.CreateDirectory(destDir + sDir) 

      ' Since we are in recursive mode, copy the children also 
      RecursiveCopyFiles(aDirs(i), (destDir + sDir), fRecursive) 
     Next 
    End If 

    ' Get the files from the current parent. 
    aFiles = System.IO.Directory.GetFiles(sourceDir) 

    ' Copy all files. 
    For i = 0 To aFiles.GetUpperBound(0) 
     ' Get the position of the trailing separator. 
     posSep = aFiles(i).LastIndexOf("\") 

     ' Get the full path of the source file. 
     sFile = aFiles(i).Substring((posSep + 1), aFiles(i).Length - (posSep+ 1)) 

     ' Copy the file. 
     System.IO.File.Copy(aFiles(i), destDir + sFile) 
    Next i 
End Sub 
+0

그것은 재귀 함수이므로 재귀를 먼저 이해하십시오. – MehulJoshi