---
title: "Filhantering"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/27672-filhantering"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Brian"
published: "2001-10-18T12:38:00.000Z"
updated: "2001-10-22T12:52:00.000Z"
replies: 5
views: 287
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/27672-filhantering"
---

# Filhantering

## #1 — Brian, 2001-10-18T12:38Z

Hejsan!

Jag skapar en fil med namnet 'c:\\temp.txt' och registrerar värden i filen.

Vad ska jag använda för funktion för att se ifall en filen redan finns på hårddisken. så att jag 9inte skriver över tidigare version?

//Brian

\[Redigerat av Brian den 18 okt 2001\]

Permalänk: https://www.webforum.nu/p/27672

## #2 — SPiN, 2001-10-18T12:59Z

En lite enkel funktion som returnerar true eller false:

```
Private Function FileExists(ByVal strFile As String) As Boolean
    Dim iLength As Integer
    
    On Error Resume Next
    iLength = Len(Dir$(strFile))
    
    If Err Or iLength = 0 Then
        FileExists = False
    Else
        FileExists = True
    End If
End Function
```

Permalänk: https://www.webforum.nu/p/399835

## #3 — Brian, 2001-10-18T13:53Z

Tack för svaret!

Hur gör jag, vilket kommando skall jag använda för att söka igenom användarens olika enheter?

I nedanstående kod, så går koden endast mot C.

/Brian

\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
filvag = Inputbox$("Ange lagrinsplats för fil: ","Information","C:\\export.txt") 
	
	
	pathname= "C:\\\*.\*"
	filename=Dir$(pathname,0)
	
	Do While filename\<\>""
		filename=Dir$()
		If filename= Mid(filvag,4,Len(filvag)) Then
			box=Msgbox("Filen " + filvag + " finns redan! "+ Chr$(13)+ "Väljer du OK så skrivs filen över. Välj avbryt för att få möjlighet att lagra värdena i en anna n fil.",65,"Information")
			If box=2 Then 
				Exit Sub
			End If
		End If
			Loop

\[Redigerat av Brian den 18 okt 2001\]

Permalänk: https://www.webforum.nu/p/399836

## #4 — fredrik, 2001-10-22T07:44Z

För att kolla vilka enheter som finns på klienten kan du göra på 2 sätt.

1\. Det enklast men också det osäkraste är om du använder FSO, då kan du helt enkelt loopa mellan A - Z och sen använda "DriveExists" för att kolla om enheten finns.

ex:
\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
for lngI = 97 to 122
if fso.DriveExists(chr(lngI)) = true then
'enheten finns
end if
next 'lngI

På detta sätt får du reda på om enheten finns eller inte. Vad du däremot inte vet är om enheten är mobil (diskett och dyl.), om det är en lokal hårddisk eller om enheten är uppmappad.

För att få reda på vilken slags enhet det är så måste man använda API.
Ex. OBS, exemplet kräver att du lägger till en "listbox", du kan sen lätt modda skriptet och använda det hur du vill.
\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
'i deklarationen
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Enum DriveTypes
    DRIVE_UNDERTIMINED = 0
    DRIVE_NONEXISTANT = 1
    DRIVE_REMOVABLE = 2
    DRIVE_FIXED = 3
    DRIVE_REMOTE = 4
    DRIVE_CDROM = 5
    DRIVE_RAMDISK = 6
 End Enum

Private Sub Form_Load()
 Dim sDrive As String, iDrive As Integer
 Dim dt As DriveTypes
 
 For iDrive = vbKeyA To vbKeyZ
    sDrive = Chr(iDrive) & ":\\"
    dt = GetDriveType(sDrive)
    Select Case dt
        Case DRIVE_REMOVABLE
            List1.AddItem sDrive & " = REMOVABLE DRIVE"
        Case DRIVE_FIXED
            List1.AddItem sDrive & " = FIXED DRIVE"
        Case DRIVE_REMOTE
            List1.AddItem sDrive & " = REMOTE DRIVE"
        Case DRIVE_CDROM
            List1.AddItem sDrive & " = CDROM"
        Case DRIVE_REMOTE
            List1.AddItem sDrive & " = RAMDISK"
        Case DRIVE_NONEXISTANT
            List1.AddItem sDrive & " = NO DRIVE!"
        Case DRIVE_UNDERTIMINED
            List1.AddItem sDrive & " = DRIVE UNDERTIMINED"
    End Select
 Next iDrive
End Sub

Detta är alltså det sätt som ger pålitligast listning och är även det som jag rekommenderar dig att använda.

Permalänk: https://www.webforum.nu/p/399837

## #5 — Beatbox, 2001-10-22T10:39Z

> Jag skapar en fil med namnet 'c:\\temp.txt' och registrerar värden i filen.
>
> Vad ska jag använda för funktion för att se ifall en filen redan finns på hårddisken. så att jag 9inte skriver över tidigare version?

Bästa sättet är att ta in "Microsoft Scripting Runtime" som referens och sedan skapa FileSystemObject.

// BeatBox

Permalänk: https://www.webforum.nu/p/399838

## #6 — Brian, 2001-10-22T12:52Z

Tack för tipsen!

Ska sätta mig och prova lite :)

//Brian

Permalänk: https://www.webforum.nu/p/399839

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/27672-filhantering
