Accueil > > > CRÉER UN FICHIER DE TAILLE X, TRÈS RAPIDEMENT
CRÉER UN FICHIER DE TAILLE X, TRÈS RAPIDEMENT
Information sur la source
Description
Bonjour,
Suite a une demande du Forum, je met a dispo une source qui m'est souvent utile.
Elle permet de créer facilement et rapidement des fichiers de taille arbitraire.
Je m'en sert par exemple lorsque j'ai besoin de calculer la taille d'un fichier, et que cette taille ne tient pas sur un Long...
Source
- Private Const CREATE_ALWAYS As Long = 2
- Private Const FILE_BEGIN As Long = 0
- Private Const GENERIC_WRITE As Long = &H40000000
-
- Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
- Private Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByRef lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
- Private Declare Function SetEndOfFile Lib "kernel32.dll" (ByVal hFile As Long) As Long
- Private Declare Function SetFilePointer Lib "kernel32.dll" (ByVal hFile As Long, ByVal lDistanceToMove As Long, ByRef lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
-
- Public Function CreateBigFile(ByRef vsFileName As String, ByVal vnSize As Variant) As Boolean
- Dim hFile As Long
- Dim nHigh As Long
- Dim nLow As Long
- Dim nTmp As Long
- Const hFFFFFFFF = 4294967295#
- Const h80000000 = 2147483648#
- hFile = CreateFile(vsFileName, GENERIC_WRITE, 0, ByVal 0&, CREATE_ALWAYS, 0, 0)
- If hFile <> -1 Then
- If CCur(vnSize) > hFFFFFFFF Then
- nHigh = Fix(vnSize / hFFFFFFFF)
- vnSize = vnSize - CCur(hFFFFFFFF * nHigh)
- End If
-
- If CCur(vnSize) > h80000000 Then
- nTmp = Fix(vnSize / h80000000)
- nLow = vnSize - h80000000 * nTmp
-
- nLow = nLow + nTmp * &H80000000
- Else
- nLow = CLng(vnSize)
- End If
-
- SetFilePointer hFile, nLow, nHigh, FILE_BEGIN
- SetEndOfFile hFile
-
- CreateBigFile = True
- CloseHandle hFile
- End If
- End Function
Private Const CREATE_ALWAYS As Long = 2
Private Const FILE_BEGIN As Long = 0
Private Const GENERIC_WRITE As Long = &H40000000
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByRef lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function SetEndOfFile Lib "kernel32.dll" (ByVal hFile As Long) As Long
Private Declare Function SetFilePointer Lib "kernel32.dll" (ByVal hFile As Long, ByVal lDistanceToMove As Long, ByRef lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Public Function CreateBigFile(ByRef vsFileName As String, ByVal vnSize As Variant) As Boolean
Dim hFile As Long
Dim nHigh As Long
Dim nLow As Long
Dim nTmp As Long
Const hFFFFFFFF = 4294967295#
Const h80000000 = 2147483648#
hFile = CreateFile(vsFileName, GENERIC_WRITE, 0, ByVal 0&, CREATE_ALWAYS, 0, 0)
If hFile <> -1 Then
If CCur(vnSize) > hFFFFFFFF Then
nHigh = Fix(vnSize / hFFFFFFFF)
vnSize = vnSize - CCur(hFFFFFFFF * nHigh)
End If
If CCur(vnSize) > h80000000 Then
nTmp = Fix(vnSize / h80000000)
nLow = vnSize - h80000000 * nTmp
nLow = nLow + nTmp * &H80000000
Else
nLow = CLng(vnSize)
End If
SetFilePointer hFile, nLow, nHigh, FILE_BEGIN
SetEndOfFile hFile
CreateBigFile = True
CloseHandle hFile
End If
End Function
Historique
- 16 août 2007 09:40:44 :
- Gestion des valeurs décimales
- 17 août 2007 13:24:14 :
- Il y avait un bug lorsque la taille voulue était comprise entre 2Go et 4Go, en gros.
- 19 août 2007 22:31:31 :
- Soucis avec les fichiers > 4 Go
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Euh c gros ca [ par raphy2 ]
J'ai fait une apli taille : 100 kotaille sur le disque 128 koC pas trop gros ca, ca dertangera pas trop l utilisateur?Vous avez fais jusqua combien vo
Comment déterminer la taille d'un très gros fichier ? [ par MTB ]
J'ai besoin de capturer la taille d'un très gros fichier (valeur excédant la capacité d'une variable "long"). Les fonctions traditionelles (FileLen, f
Créer un fichier de taille X rapidement [ par Morinaux ]
Bonjour,J'ai déjà créé un programme qui permet de générer des fichiers de taille X mais le temps de création du fichier devient vite très longue si on
changer la taille d'une image rapidement, sans picturebox [ par seb ]
Voilà, j'aimerais bien savoir comment reduire la taille d'une image sans recopier pixels par pixels toute l'image, simplement en connaissant la taille
Creer nouveau label sur picturebox et definir sa taille avec la souris [ par matheonimbus30 ]
Bonsoir, Je creer en ce moment une sorte de paint et je souhaite creer un label sur une picturebox en mode executin et definir sa taille avec la sour
Comment faire pour les "gros" besoin de mémoire ? [ par kabak ]
Bonjour, Dans l'une de mes applications, j'aurais besoin de faire plusieurs tableau ayant des tailles qui approchent sérieusement des 64Kio. Hors mê
creer nouveau fichier + nom du fichier ? [ par Tyrell2 ]
bonjour, à un moment du programme je souhaite créer un nouveau fichier txt (je sais faire) je m'assure d'abord que le fichier existe ou pas sur le HD
Problème en rapport avec Visual basic 2010 expres [ par eric141 ]
Bonjours tout le monde,[^^happy13] J'ai un gros problème. Je ne sais pas si ce problème est fréquent mais bon... Donc mon problème c'est que quand je
aide pour creer une form avec treeview a double sens [ par laser45 ]
bonjour, voila je voudrai creer une sorte de grafcet en vba avec par exemple etape1 10 minute etape 2, 20 minutes, commence apres etape 1, etape suiv
génération par récursivité d'un tableau ordonné de façon aléatoire [ par andryszakjeanmichel ]
Comment pourrais-je améliorer les performances de la méthode itérative ? Merci pour votre contribution. Je cherchais à comparer les performanences e
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|