Supports, Répertoires, Fichiers
et JavaScript

Fichiers &
FileSystemObject
Syntaxe / Exemples
FileSystemObject donne accès aux
Supports/Répertoires/Fichiers
var fso=new ActiveXObject("Scripting.FileSystemObject")
Créer un Fichier var ts=fso.CreateTextFile("nom du fichier",ecraser,unicode);
avec ecraser=true si écrasement préalable, false sinon
Supprimer un Fichier var ts=fso.DeleteFile("nom du fichier");
Tester si un Fichier existe
fso.FileExists("nom du fichier");
if (!fso.FileExists("nom du fichier"))
    var ts=fso.CreateTextFile("nom du fichier");
Déplacer un/des Fichiers var ts=fso.MoveFile("Source","Destination");
Copier un/des Fichiers
var ts=fso.CopyFile("Source","Destination",ecraser);
avec ecraser=true si écrasement préalable
             false sinon
Informations sur un fichiers
var fich=fso.GetFile("fichier");
nom                        : fich.Path.toUpperCase()
date de création           : fich.DateCreated
date dernier accés         : fich.DateLastAccessed
date dernière modification : fich.DateLastModified
taille                     : fich.Size
Ouverture d'un Fichier
var ts=fso.OpenTextFile("nom du fichier",Type,Créer);
avec Type  = 1 pour ouvrir un fichier en lecture
             2                           écriture
             8                           écriture à la suite
     Créer = true si on crée le fichier quand il n'existe pas, 
             false sinon
Fermeture d'un Fichier ts.Close();
Lecture d'un fichier
var ligne=ts.ReadLine();        // lit jusqu'à CrLf
var car=ts.Read(NbrCaractères); // lit NbrCaractères
var tout=ts.ReadAll();          // lit fichier complet

var fso=new ActiveXObject("Scripting.FileSystemObject");
var ts=fso.OpenTextFile("fichier",1,false);
var lu;
while (!ts.AtEndOfStream)	// tant que le fichier n'est
      { lu=ts.ReadLine();	// pas entiérement lu
        alert(lu);	}
ts.close();
Taille d'un fichier
var ts=fso.GetFile("fichier");
var lg=ts.Size;
Ecriture d'un fichier
ts.Write("Salut tout le monde"); 
ts.WriteLine("Salut tout le monde");  // = Write + CrLf
nom fichier dans un chemin
var f=fso.GetBaseName(chemin);

alert (fso.GetBaseName("C:\\Mes Documents\\Exemples\\toto.txt");
va afficher toto
Extension du fichier dans un chemin
var f=fso.GetExtensionName(chemin);

alert (fso.GetExtensionName("C:\\Mes Documents\\Exemples\\toto.txt");
va afficher txt
Nom du fichier complet dans un chemin
var f=fso.GetFileName(chemin);

alert (fso.GetFileName("C:\\Mes Documents\\Exemples\\toto.txt");
      va afficher toto.txt
Nom d'un fichier temporaire var tmp=fso.GetTempName();

Fichiers &
CLASSID
Syntaxe / Exemples
 <OBJECT NAME="CD1" ID="CD1" VIEWASTEXT
        CLASSID="CLSID:F9043C85-F6F2-101A-A3C9-08002B2F49FB"> 
   <PARAM NAME="DialogTitle"
         VALUE="Choix Fichier"> 
   <PARAM NAME="FileName" VALUE=""> 
   <PARAM NAME="Filter"> 
   <PARAM NAME="FilterIndex" VALUE=1> 
   <PARAM NAME="InitDir" VALUE="C:\Mes Documents"> 
   <PARAM NAME="Flags" VALUE=2630148> 
 < /OBJECT>

Flags en Héxa ( combinaisons possibles )
000001  case à cocher "Read Only" validée
000002  message si fichier existe
000004  case à cocher "Read Only"
000008  répertoire en cours = celui actif à 
        l'ouverture de la boite de dialogue
000010  bouton Aide
000100  caractères non valides autorisés
000200  multi-selections autorisés
000400  extansion renvoyée non= DefaultExt
000800  le nom chemin doit être valide
001000  doit exister
002000  message Créer ? si n'existe pas
004000  erreurs de violation de partage ignorés
008000  pas d'attributs Read Only
040000  pas de noms longs
080000  boite de dialoque style window 95
100000  pas de raccourcis
200000  noms longs
 **** recherche pour lire
  CD1.Filter="Textes|*.txt;*.rtf|Sons|*.wav;*.MP3|Tous|*";
  CD1.ShowOpen();			
  if (CD1.Filename.length>0)
     { // un fichier à été choisi ... 

**** recherche pour écrire CD1.Filter="Tous|*"; CD1.ShowSave(); if (CD1.Filename.length>0) { // un fichier à été choisi ...

Fichiers &
WScript.Shell
Syntaxe / Exemples
Mettre un Fichier
à la corbeille
Shl.NameSpace(0x11).ParseName(Fichier).InvokeVerb ("&Supprimer");
exemple :
//———————————————————————————————————————————————————————————————————————————
function Corbeille(Fichier)	//	© marcelBultez@Tiscali.fr  Septembre 20005 
//———————————————————————————————————————————————————————————————————————————
{
  var Shl = new ActiveXObject("Shell.Application");
  var ret="supprimé";
  try
    {  //#### tentative de mettre le fichier à la corbeille
      Shl.NameSpace(0x11).ParseName(Fichier).InvokeVerb ("&Supprimer");
    }
  catch(erreur)
    {  //#### une erreur s'est produite
      if ( erreur.description.length == 0 )
          {  
            ret="Fichier Inconnu";
          }
      else  {
            ret=erreur.description;
          }
    }
  Shl=null;
  return ret;
}


Répertoires &
FileSystemObject
Syntaxe / Exemples
Répertoire initial
var url=unescape(self.location.pathname);
var adr=(fso.GetExtensionName(url).toLowerCase()!='hta')?1:0;
var dir=fso.GetParentFolderName(url).substr(adr);
Test si un Répertoire existe fso.FolderExists("Répertoire")
Créer un Répertoire
fso.CreateFolder("Répertoire");
if (!fso.FolderExists("Répertoire")
    fso.CreateFolder("Répertoire")
Supprimer un Répertoire
fso.DeleteFolder("Répertoire",forcer);
avec forcer=true si destrcution préalable des composants,
            false sinon
Déplacer un Répertoire fso.MoveFolder("Source","Destination");
Copier un Répertoire
fso.CopyFolder("Source","Destination",ecraser);
avec ecraser=true si écrasement préalable
             false sinon
Examen d'un Répertoire
et des Sous-Répertoires
                            //
function Aller(repertoire)  // début d'un répertoire 
                            //
{
 f = fso.GetFolder(repertoire);
                                        //
 var f1 = new Enumerator(f.files);      // les fichiers 
                                        //
 for (; !f1.atEnd(); f1.moveNext())
 { 
	alert(f1.item());  
 }
                                       //
 var f2=new Enumerator(f.subfolders);  // les sous/répertoires 
                                       //
 for (; !f2.atEnd(); f2.moveNext())
 { 
	Aller(f2.item());  
 }	
}
Répertoire parent
GetParentFolderName(chemin);

alert (fso.GetParentFolderName("C:\\Mes Documents\\Exemples\\toto.txt");
      va afficher c:\\Mes Documents\\
Répertoires Spéciaux
fso.GetSpecialFolder(SystemFolder)
fso.GetSpecialFolder(TemporaryFolder)
fso.GetSpecialFolder(WindowsFolder)
caractéristiques Répertoires
c=fso.GetFolder("répertoire");
c.?
  Attributes [= attribut] définit ou retourne les attributs
  DateCreated             date et heure de création
  DateLastAccessed        date et heure dernier accès
  DateLastModified        date et heure de la dernière modification
  Drive                   lecteur sur lequel réside le dossier
  Files                   collection de fichier contenus 
  IsRootFolder            true si le dossier est le dossier racine. 
  Name [= nom]            définit ou retourne le nom du dossier. 
  ParentFolder            dossier parent
  Path                    chemin d'accès
  ShortName               nom du dossier dans le format DOS 8.3. 
  ShortPath               chemin du dossier dans le format DOS 8.3. 
  Size                    taille du dossier. 
  SubFolders              collection de dossiers contenus
  Type                    type de dossier

Répertoires &
CLASSID
Syntaxe / Exemples
 <OBJECT ID="CD2" name="CD2" VIEWASTEXT
        CLASSID='clsid:13709620-C279-11CE-A49E-444553540000'> 
   <PARAM NAME="Title"> 
 </OBJECT>
...
var dossier=CD2.BrowseForFolder
            (0,Titre,Flags,Répertoire Initial);

Flags en Héxa ( combinaisons permises )
0001    limite aux vrais dossiers
0002    interdit d'explorer en dehors du domaine
0010    affiche une zone de texte
0020    vérifie la saisie dans la zone d'édition
1000    autorise à parcourir le réseau
var dossier=CD2.BrowseForFolder
            (0,"Choix Répertoire",0,"");
 if (dossier)	// répertoire choisi
{
  var rep=dossier.Title;
  if(/\((\w:)\)/i.exec(rep))	
  // c: ? ( par exemple )
  { rep=RegExp.$1; }
  else 
  { rep=dossier.ParentFolder.ParseName(rep).Path; }
  ... 
}

Répertoires &
WScript.Shell
Syntaxe / Exemples
Répertoires système
var exc=new ActiveXObject("WScript.Shell");
var bureau=exc.SpecialFolders("Desktop");

var nomsp=new Array(
	"AllUsersDesktop","AllUsersStartMenu",
	"AllUsersPrograms","AllUsersStartup","Desktop",
	"Favorites","Fonts","MyDocuments","NetHood",
	"PrintHood","Programs","Recent","SendTo",
	"StartMenu","Startup","Templates")
for ( i=0;i<nomsp.length;i++)
{ 
    document.writeln(nomsp[i]+"="+
    exc.SpecialFolders(nomsp[i])+"<br>"); 
}

<table border=0> <script type="text/javascript"> var exc=new ActiveXObject("WScript.Shell"); var t; var nomes=new Array( "path","prompt","dircmd","windir","temp","tmp"); for (var i=0;i<nomes.length;i++) { t="%"+nomes[i]+"%"; document.writeln("<tr><td><font color=red><b>"+ "ExpandEnvironmentStrings('"+nomes[i]+"')</td><td>"+ "<font color=blue><b>"+exc.ExpandEnvironmentStrings(t)+ "</td></tr>"); } </script> </table>
Choix d'un Répertoire
function RepertoireChoix() 
{
  var Shl = new ActiveXObject("Shell.Application");
  return(Shl.BrowseForFolder(0, "Choix d'un Répertoire", 0).Items().Item().Path);
}

Supports &
FileSystemObject
Syntaxe / Exemples
Test si un Support existe fso.DriveExists("Support")
Supports Disponibles
fso.Drives
var fso=new ActiveXObject("Scripting.FileSystemObject");
f1 = new Enumerator(fso.Drives);
for (; !f1.atEnd(); f1.moveNext())
{ 
	alert(f1.item());  
}
support dans un chemin
var f=GetDrive(chemin);
alert (fso.GetDriveName("C:\\Mes Documents\\Exemples\\toto.txt");
      va afficher c:
Informations
fso.Drives("C:").AvailableSpace     Taille Maxi
                 DriveType          Type de Support
                 FreeSpace          Taille disponible
                 IsReady            Support prêt ou non
                 RootFolder         Racine
                 TotalSize          Taille maxi
                 VolumeName         Nom du Volume

Divers FileSystemObject Syntaxe / Exemples
ajouter un nom au chemin fso.BuildPath(chemin,nom);
chemin d'accès complet GetAbsolutePathName(chemin);



Dans une certaine mesure, on peut aussi
accéder aux fichiers d'un site

affiche le fichier cité dans l'éditeur
de texte utilisé par défaut ( NotePad ? )


window.location="view-source:http://fichier sur le serveur";

insère un fichier texte

<html><body>
<b>exemple d'insertion d'un fichier texte<br/>
<object data="http://fichier sur le serveur"
           type="text/plain"
           width="800"
           height="300"
           ViewAsText></object>
<b>======================================<br/>
</body></html>

"récupère" le fichier index.html
dans une variable

<script type="text/javascript">
var url = "http://marcel-bultez.chez.tiscali.fr";
var xmlHttp; 
try       { xmlHttp = new XMLHttpRequest(); } 
catch (e) { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } 
xmlHttp.open("GET", url, false, "utilisateur", "pass"); 
xmlHttp.send(); 
alert(xmlHttp.responseText);
xmlHttp = null; 
</script>




si c'est incomplet, s'il y a des erreurs, si vous voulez des éclaircissements, des explications ...

~\\|// (@ -) •———oOOOo———(_)———oOOOo———————• |  M'écrire : Mail Anti-Spam  | |  Mon Site  | | .oooO Oooo. | •—————( )———( )———————————• \ ( ) / \_) (_/