Board logo

標題: [發問] 判斷檔案存在否? 結果為"False不存在" 的檔案輸出文字檔案 [打印本頁]

作者: webbliu    時間: 2011-8-1 15:00     標題: 判斷檔案存在否? 結果為"False不存在" 的檔案輸出文字檔案

本帖最後由 webbliu 於 2011-8-4 07:11 編輯

Dear 大大們,


請問

用Dir 判斷檔案存在否時,  也有使用File.Exists 的方式

能否把判斷結果不存在 False的路徑檔案 輸出至文字檔案?

通常判斷檔案完都是以 MessageBox.show ("秀出檔案不存在")

該如何寫 才能把所有不存在的檔案都輸出至 文字檔案.txt??

有宣告Dim path as String,會同時檢查很多檔案。

我想要只列出判斷檔案結果為False "不存在" 的 ("路徑檔案")~~
請指點~ 謝謝大大們

if Dir ("path/files") =False  Then

writeline (false path: .....)
作者: chin15    時間: 2011-8-3 09:54

也許多半人都像我一樣,一頭霧水吧。
詳細些可較快得到回覆。
作者: webbliu    時間: 2011-8-4 07:12

回復 2# chin15


    Dear  
如果還是看不懂 請回復。
非常感謝~
作者: elinbit    時間: 2011-8-4 15:30

本帖最後由 elinbit 於 2011-8-6 07:47 編輯

Dim NotExistFile As String
    Dim TarFile As String
    Dim OpenFileNum As Integer
   
    NotExistFile = "下列檔案不存在:" & vbCrLf
   
    '以下判斷請自行變化
    If Dir("path/fileA") = "" Then NotExistFile = NotExistFile & "path/fileA" & vbCrLf
    If Dir("path/fileB") = "" Then NotExistFile = NotExistFile & "path/fileB" & vbCrLf
    .
    .
    .
    .
        
    TarFile = "D:\Temp\FilesNotExist.txt" '你想輸出儲存的檔案名稱路徑
      
    OpenFileNum = FreeFile
    Open TarFile For Output As #OpenFileNum
    Print #OpenFileNum, NotExistFile
    Close #OpenFileNum
作者: webbliu    時間: 2011-8-5 11:45

本帖最後由 webbliu 於 2011-8-5 11:57 編輯

回復 4# elinbit


    Dear 大大 謝謝~
  請問~~
   欲執行時出現 open 未宣告"  請問該值 要宣告甚麼?
   open FileNum 也是

Dear 大大 順便 請教

如果是這樣

目的還是在找出不存在的"路徑檔案"
Apath 是從Table 讀出的"路徑檔案",很多筆。
下面兩段程式 我在做比較後 ,  小於10byte的檔案 都無法輸出至.txt。
請問該如何修正
非常感謝
  1. Dim Apath as string  
  2.         Dim R As System.IO.FileInfo
  3.              
  4.             For i = 1 To n  
  5.             R = My.Computer.FileSystem.GetFileInfo("Apath")  
  6.             If R.Length <  10 Then  '請問這裡的R.length 改怎麼寫呢
  7.             Console.writeline(size + "小於" + Apath)  
  8.             End If  
複製代碼
  1. Dim size as long
  2.         Dim Apath as string
  3.          
  4.         For i = 1 To n
  5.         On Error Resume Next
  6.         size = Filelen(Apath)
  7.         If size <  10 Then
  8.         Console.writeline(size + "小於" + Apath)
  9.         End If
複製代碼

作者: elinbit    時間: 2011-8-6 08:05

回復 5# webbliu


    1.Sorry不知道你的環境是VB.Net,上述語法是VB6環境下執行的
2. R.Length <  10 和 size <  10 應該都可以
3.Console.WriteLine(Size + "小於" + Apath) 應該不會寫入文字檔
4.底下是MSDN寫入文字檔的範例,請參考修改:
Option Explicit On
Option Strict On
Imports System
Imports System.IO
Public Class TextToFile
    Private Const FILE_NAME As String = "MyFile.txt"
    Public Shared Sub Main()
        If File.Exists(FILE_NAME) Then
            Console.WriteLine("{0} already exists.", FILE_NAME)
            Return
        End If
        Using sw As StreamWriter = File.CreateText(FILE_NAME)
            sw.WriteLine("This is my file.")
            sw.WriteLine("I can write ints {0} or floats {1}, and so on.", 1, 4.2)
            sw.Close()
        End Using
    End Sub
End Class
作者: webbliu    時間: 2011-8-6 12:06

回復 6# elinbit


    Dear 大大
MSDN 這段我看不懂
能否請你指導,我該如何把    exists 判斷不存在的檔案+路徑輸出到文字?
  1. Dim path as string
  2. Dim atxt as  new system.Io.StreamWriter("C:\exists.txt")

  3. If system.io.file.exits("path") Then
  4. '判斷不存在 輸出到文字檔案.txt
複製代碼

作者: elinbit    時間: 2011-8-6 22:44

回復 7# webbliu


    改寫MSDN的範例程式碼應該不難才對~

       Dim path as string

        If File.Exists(path) Then         '如果檔案存在
           If File.Length <  10 Then   '隨便你要加什麼程式碼         
           Else
           End If
       Else        '如果檔案不存在
           Using atxt As StreamWriter = File.CreateText("C:\exists.txt")  '開檔
            atxt .WriteLine("下列檔案不存在:" )  '寫入一行
            atxt .WriteLine(path) '寫入不存在的檔案路徑
            atxt .Close() '關閉檔案
           End Using
        End If

希望對你有幫助~
作者: webbliu    時間: 2011-8-8 11:19

回復 8# elinbit


    Dear 大大

我想請問  要取得檔案容量資訊,是不是要用 Fuction GetFilesize

還是可以直接 getfilesize
這是我寫的一段,不知道這樣做對不對?
  1. Private Function GetFileSize(ByVal p1 As String) As Integer
  2.         Dim myfile As New FileInfo("C:\H.mov")
  3.         Dim filesize As Long = myfile.Length
  4.         Return filesize
  5.     End Function
複製代碼
原本是打算判斷FileExists   如果檔案不存在,就列出目錄(包含路徑)......
但怎麼樣都做不到...我太遜了。

後來是打算用比較檔案容量大小,小於0的檔案列出目錄也包含檔案路徑......
但不知道為何,無論大於小於0都有被列出......。

現在遇到瓶頸了,還請大大指教。
謝謝大大!
作者: elinbit    時間: 2011-8-8 21:13

回復 9# webbliu


1. FileInfo類別的File.Length屬性本來就是回傳指定的檔案大小,單位為bytes,不需另外寫一個Function
2.我還沒看過檔案大小為負數的檔案,所以應該用不到檔案大小<0 這樣的判斷式
3.不存在的檔案你無法列出,但是用檔案大小比對卻可以全部列出,表示不是你列出有問題,問題應該出在你的判斷式邏輯,建議你多嘗試不同的邏輯寫法,或許能自己找到你要的結果
作者: webbliu    時間: 2011-8-10 11:29

本帖最後由 webbliu 於 2011-8-29 11:30 編輯

回復 10# elinbit


    Dear 大大  
我已經解決,感謝你的指導&建議
非常謝謝
我的解法如下~
  1. Dim sizefile As System.IO.FileInfo
  2. Dim apath As Sting
  3. Dim N As Integer
  4. Dim size =system.IO.Fileinfo

  5. For i =1 to N

  6. sizefile = My.Computer.FileSystem.GetFileInfo(apath)
  7.             On Error Resume Next
  8.             If sizefile.Length < 0 Then
  9.                 file.WriteLine("miss"+ ": " + apath)
  10.                 End If
  11.                 'Else

  12. ProgressBar1.Value = Int(i / n * 100)
  13. ProgressBar1.Refresh()

  14. Next
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)