Accueil > > > GESTION DE FICHIER ET DOSSIER + AUTRES
GESTION DE FICHIER ET DOSSIER + AUTRES
Information sur la source
Description
Petit code qui permet de gérer les fichiers et dossiers ainsi que d'autres fonctions. Je suis débutant, il manque beaucoup de chose mais cela donnera une base pour ceux qui veulent étudier le fonctionnement d'un os. Bien sur quand je parle os il faut relativiser ^^.
Source
- #include <string.h>
- #include <string>
- #include <time.h>
- #include "types.h"
-
- using namespace std;
-
- void initArrayRecord(rootDirectory arrayRecord[1024]);
- void initArrayRecord(dataSection arrayRecord[1024]);
- char text [512];
- int numéro = 99;
- int incrementation = 0;
- int kb ;
- void main()
- {
-
- // la limite de compilation impose une taille raisonnées dans la limite des tableaux
- rootDirectory rootDirectoryArrayRecord[1024]; // tableau enregistrement de rootDirectory
- dataSection dataSectionArrayRecord[1024]; // // tableau enregistrement de dataSection
-
- char commande[255]; // commande passée
-
- // initialisation des structures
- initArrayRecord(rootDirectoryArrayRecord);
- while ( strcmp(commande,"exit") != 0 )
- {
- printf("? >");
- gets(commande);
- time_t *h=NULL;
- time_t t;
- if (strcmp(commande,"ver") == 0 )
- {
- printf("version 0.1 \n");
-
- }
- if (strcmp(commande,"date") == 0 )
- {
-
- int j = 0;
- char date[255];
- char realDate[255];
- char realYear[5];
- time_t rawtime;
- t = time ( &rawtime );
- sprintf(date,"%s",asctime(localtime(&t)));
- strncpy(realDate,date,10);
- realDate[10] = '\0';
- j=0;
- for (int i =20 ; i <strlen(date)-1; i++)
- {
- realYear[j] = date[i];
- j++;
- }
- realYear[j] = '\0';
- sprintf(realDate,"%s-%s",realDate,realYear);
- printf("date : %s \n",realDate);
-
- }
- if (strcmp(commande,"time") == 0 )
- {
-
- int j = 0;
- char date[255];
- char realHour[255];
-
- time_t rawtime;
- t = time ( &rawtime );
- sprintf(date,"%s",asctime(localtime(&t)));
- j=0;
- for (int i =11 ; i <20; i++) // prototype à vérifier pour les positions
- {
- realHour[j] = date[i];
- j++;
- }
- realHour[j] = '\0';
- printf("heure : %s \n",realHour);
-
- }
-
- ///////////////////////////creation de fichier
-
- if (commande[0] == 'e' && commande[1] == 'd' && commande[2] == 'i' && commande[3] == 't' )
- {
-
- char nom[255];
- int j = 0;
- int position;
- int longueur = strlen(commande);
- for (int i = 5; i< longueur; i++)
- {
- nom[j] = commande[i];
- j++;
- }
- nom[j]='\0';
- printf("nom fichier %s \n",nom);
- char extension[4];
- for (int i = 0; i < strlen(nom); i++)
- {
- if ( nom[i] == '.')
- {
- position = i;
- i = 99;
- }
- }
- j= 0;
- for (int i = position+1; i< strlen(nom); i++)
- {
- extension[j] = nom[i];
- j++;
- }
- extension[j]='\0';
- numéro++;
- incrementation ++;
- printf("ext fichier %s \n",extension);
- rootDirectoryArrayRecord[numéro].rdID = numéro;// identifiant 0 à 99 réservés
- strcpy (rootDirectoryArrayRecord[numéro].rdName , nom); // ajout de nom
- strcpy (rootDirectoryArrayRecord[numéro].rdExtension , extension);// extension
- dataSectionArrayRecord[incrementation].dsID , incrementation; /// ID avec varriable incrementation pour le Fichier
- rootDirectoryArrayRecord[numéro].rdFirstSecor , incrementation; /// Id avec varriable incrementation pour l'emplacement du contenu
- rootDirectoryArrayRecord[numéro].rdType = 1;
- printf("Contenu du fichier : \n");
- gets(text);
- strcpy(dataSectionArrayRecord[incrementation].dsData , text); //inserion du contenu dans la section data en recupérant l id
- kb = strlen(text);
- rootDirectoryArrayRecord[numéro].rdSize = kb;
- printf("taille : %d kb\n",kb);
- //insertion du poid en KB avec le nbr de char
- if (strcmp (dataSectionArrayRecord[incrementation].dsData , text) ==0)
- {
- printf("Enregistrement ok\n");
- }
- else
- {
- printf(" Error de l'enregistrement\n");
- }
- printf("Quelle dossier ?\n");
- /////////recherche du dossier ///////
- gets(text);
- int j1 = 0;
- for (int i = 0; i< 1024; i++)
- {
- if (strcmp(rootDirectoryArrayRecord[i].rdName, text) ==0)
- {
- j1=i; //// id du dossier
- i=1025;
- printf("dossier trouver \n");
- printf("Enregistrement total \n");
- }
- if (i == 1023)
- {
- printf(" Dossier introuvable\n");
- printf(" Enregistrement partielle \n");
- }
- }
-
- rootDirectoryArrayRecord[numéro].rdParent = j1; //// Le fichier prend la valeur de l id du dossier dans lequelle on l'ajoute
-
- }
-
- ///////////////////////////////////////////////////////////////////////////////////
- ///////////// Création de dossier ////////////////////
-
-
- if (commande[0] == 'm' && commande[1] == 'k' && commande[2] == 'd' && commande[3] == 'i' && commande[4] == 'r')
- {
- numéro ++;
- char nom[255];
- int j = 0;
- int position;
- int longueur = strlen(commande);
- for (int i = 6; i< longueur; i++)
- {
- nom[j] = commande[i];
- j++;
- }
- nom[j]='\0';
- printf("nom dossier %s \n",nom);
- rootDirectoryArrayRecord[numéro].rdID = numéro;// id de rootdirectory
- rootDirectoryArrayRecord[numéro].rdType = 0;
- strcpy (rootDirectoryArrayRecord[numéro].rdName , nom); /// affectation du nom du dossier
- if (strcmp (rootDirectoryArrayRecord[numéro].rdName , nom)==0)
- {
- printf("Enregistrement ok\n");
- printf("id = %d\n", numéro);
- }
- else
- {
- printf(" Error de l'enregistrement");
- }
-
- }
- ///////////////////// Dir ////////////////////
- int numero2 =0;
- int IDdossier;
- char name [250];
- char namedossier [250];
- if (strcmp(commande,"dir") == 0 )
- {
-
- for (int i=99; i< 1024;i++)
- {
- rootDirectoryArrayRecord[i].rdScan = 0;
-
- }
- for (int i=99; i< 1024;i++)
- {
- if (( rootDirectoryArrayRecord[i].rdScan == 0) && (rootDirectoryArrayRecord[i].rdType == 1 )
- && (rootDirectoryArrayRecord[i].rdID != 0 )) // si c'est un fichier et qu'il n'a pas ete scan et qu'il a bien un ID
-
- {
- IDdossier = rootDirectoryArrayRecord[i].rdParent; //recupérartion de l'id du dossier
- strcpy (name , rootDirectoryArrayRecord[IDdossier].rdName);
- printf ("le nom du dossier est %s \n",name);
- //scan des fichier ayant le meme nom que l'association IDname
- for (int y=99; y< 1024;y++)
- {
- if (( rootDirectoryArrayRecord[y].rdScan == 0) && (rootDirectoryArrayRecord[y].rdType == 1 )
- && (rootDirectoryArrayRecord[y].rdID != 0 ) && (rootDirectoryArrayRecord[y].rdParent == IDdossier))
- {
- strcpy (namedossier , rootDirectoryArrayRecord[y].rdName);
- printf (" le nom du fichier est %s \n",namedossier);
- rootDirectoryArrayRecord[y].rdScan = 1;
- }
- }
-
-
- }
-
-
- }
-
- }
- ////////////////////// cat ///////////////////////////
- if (commande[0] == 'c' && commande[1] == 'a' && commande[2] == 't')
- {
- numéro ++;
- char nom[255];
- int j = 0;
- int position;
- int longueur = strlen(commande);
- int id;
- int poid;
- int iddossier;
- char nomdossier [250];
- for (int i = 4; i< longueur; i++)
- {
- nom[j] = commande[i];
- j++;
- }
- nom[j]='\0';
- printf("nom fichier %s \n",nom);
- for (int i =99; i<1024; i++)
- {
- if (strcmp(rootDirectoryArrayRecord[i].rdName, nom) ==0)
- {
- id = rootDirectoryArrayRecord[i].rdID;
- printf("id du fichier est %d\n",id);
- poid = rootDirectoryArrayRecord[i].rdSize;
- printf("le poid du fichier est %d kb\n",poid);
- iddossier = rootDirectoryArrayRecord[i].rdParent;
- strcpy(nomdossier , rootDirectoryArrayRecord[iddossier].rdName);
- printf("Il est dans le dossier %s\n",nomdossier);
- }
- }
- }
- ////////////////////////////// defrag ////////////////////////////:
- if (strcmp(commande,"defrag") == 0 )
-
-
- {
- for (int i = 98; i < 1024;i++)
- {
- if (strcmp (rootDirectoryArrayRecord[i].rdName , "")==0)
- {
- char name2 [250];
- char extens [250];
- int sector; // Emplacement du contenu
- int type;
- int size;
- int id;
- int parent;
- int inc =0;
- int j=0;
- j = i;
- while ( strcmp (rootDirectoryArrayRecord[j].rdName , "")==0) // Nombre de place vide aprés l'id
- {
- j++;
- }
- if ( rootDirectoryArrayRecord[j].rdType == 1) // Travail sur les fichier
- {
- ///sauvegardes des valeurs
- strcpy (name2 , rootDirectoryArrayRecord[j].rdName);
- strcpy (extens , rootDirectoryArrayRecord[j].rdExtension);
- sector = rootDirectoryArrayRecord[j].rdFirstSecor;
- type = rootDirectoryArrayRecord[j].rdType;
- size = rootDirectoryArrayRecord[j].rdSize;
- parent = rootDirectoryArrayRecord[j].rdParent;
- ///suppresion des donnée
- rootDirectoryArrayRecord[j].rdID = 0;
- strcpy(rootDirectoryArrayRecord[j].rdName,"");
- strcpy(rootDirectoryArrayRecord[j].rdExtension,"");
- rootDirectoryArrayRecord[j].rdType = 2;
- rootDirectoryArrayRecord[j].rdSize = 0;
- rootDirectoryArrayRecord[j].rdTime = 0;
- rootDirectoryArrayRecord[j].rdDate = 0;
- rootDirectoryArrayRecord[j].rdFirstSecor = 0;
- rootDirectoryArrayRecord[j].rdParent = 0;
- rootDirectoryArrayRecord[j].rdAttrib = 0;
- /// réatribution des données
- rootDirectoryArrayRecord[i].rdID = i;
- strcpy (rootDirectoryArrayRecord[i].rdName , name2);
- strcpy (rootDirectoryArrayRecord[i].rdExtension , extens);
- rootDirectoryArrayRecord[i].rdFirstSecor = sector;
- rootDirectoryArrayRecord[i].rdType = type;
- rootDirectoryArrayRecord[i].rdSize = size;
- rootDirectoryArrayRecord[i].rdParent = parent;
- printf(" le Fichier %s ayant l'id %d a ete déplacer a l'id %d\n",name2,j,i);
- }
- if ( rootDirectoryArrayRecord[j].rdType == 0) // travail sur les dossier
- {
- // sauvegarde des données
- id = rootDirectoryArrayRecord[j].rdID;
- strcpy (name2 , rootDirectoryArrayRecord[j].rdName);
- type = rootDirectoryArrayRecord[j].rdType;
- // suppression des données
- strcpy(rootDirectoryArrayRecord[j].rdName,"");
- type = rootDirectoryArrayRecord[j].rdType;
- //réatribution des données
- rootDirectoryArrayRecord[i].rdID = i;
- strcpy (rootDirectoryArrayRecord[i].rdName , name2);
- rootDirectoryArrayRecord[i].rdType = type;
- printf(" le Dossier %s ayant l'id %d a ete déplacer a l'id %d\n",name2,j,i);
- for (j = 99; j<1024; j++)
- {
- if (rootDirectoryArrayRecord[j].rdParent = id)
- {
- rootDirectoryArrayRecord[j].rdParent = i;
- }
- }
- }
-
- }
- if (strcmp (dataSectionArrayRecord[i].dsData,"")) ////travail sur les données
- {
- int j;
- int id;
- char contenu2[512];
- j = i;
- while (strcmp (dataSectionArrayRecord[j].dsData ,"")) // Nombre de place vide aprés l'id
- {
- j++;
- }
- id = dataSectionArrayRecord[j].dsID;
- strcpy (contenu2 , dataSectionArrayRecord[j].dsData);
- //suppresion des données
- dataSectionArrayRecord[i].dsID = 0;
- strcpy(dataSectionArrayRecord[i].dsData,"");
- //reatribution des données
- dataSectionArrayRecord[i].dsID = i;
- strcpy (dataSectionArrayRecord[i].dsData , contenu2);
- for(j=99; j<1024;j++)
- {
- if (rootDirectoryArrayRecord[j].rdFirstSecor == id)
- {
- rootDirectoryArrayRecord[j].rdFirstSecor = i;
- }
- }
- }
- }
- }
- /////////////////////delf///////////////////
- if (commande[0] == 'd' && commande[1] == 'e' && commande[2] == 'l' && commande[3] == 'f' )
- {
-
- char nom[255];
- int sector;
- int j = 0;
- int position;
- int longueur = strlen(commande);
- for (int i = 5; i< longueur; i++)
- {
- nom[j] = commande[i];
- j++;
- }
- nom[j]='\0';
- for (j =99 ; j<1024; j++)
- {
- if ((strcmp (rootDirectoryArrayRecord[j].rdName , nom)==0) && (rootDirectoryArrayRecord[j].rdType == 1))
- {
- sector = rootDirectoryArrayRecord[j].rdFirstSecor;
- rootDirectoryArrayRecord[j].rdID = 0;
- strcpy(rootDirectoryArrayRecord[j].rdName,"");
- strcpy(rootDirectoryArrayRecord[j].rdExtension,"");
- rootDirectoryArrayRecord[j].rdType = 2;
- rootDirectoryArrayRecord[j].rdSize = 0;
- rootDirectoryArrayRecord[j].rdTime = 0;
- rootDirectoryArrayRecord[j].rdDate = 0;
- rootDirectoryArrayRecord[j].rdFirstSecor = 0;
- rootDirectoryArrayRecord[j].rdParent = 0;
- rootDirectoryArrayRecord[j].rdAttrib = 0;
- for (int h =99; h<1024; h++)
- {
- if (dataSectionArrayRecord[h].dsID == sector)
- {
- dataSectionArrayRecord[h].dsID = 0;
- strcpy(dataSectionArrayRecord[h].dsData,"");
- }
- }
-
- printf("effacement ok \n");
- }
-
- }
-
- }
- ////////////////deld/////////////////////////////
- if (commande[0] == 'd' && commande[1] == 'e' && commande[2] == 'l' && commande[3] == 'd' )
- {
-
- char nom[255];
- int j = 0;
- int position;
- int longueur = strlen(commande);
- int type;
- for (int i = 5; i< longueur; i++)
- {
- nom[j] = commande[i];
- j++;
- }
- nom[j]='\0';
- for (j =99 ; j<1024; j++)
- {
- if ((strcmp (rootDirectoryArrayRecord[j].rdName , nom)==0) && (rootDirectoryArrayRecord[j].rdType == 0))
- {
-
- strcpy(rootDirectoryArrayRecord[j].rdName,"");
- type = rootDirectoryArrayRecord[j].rdType;
- ///////////////////////////////////////////////////fdvf
- printf("effacement ok \n");
- }
- }
- }
-
- //////////////////////////////////////////////////////
-
-
-
-
- if (strcmp(commande,"drspace") == 0 )
- {
-
- if (rootDirectoryArrayRecord[0].rdType == ' ')
- {
- printf("Drive empty, 100%% free \n");
- }
- }
- if (strcmp(commande,"?") == 0 || strcmp(commande,"help") == 0 || strcmp(commande,"man") == 0)
- {
-
- printf("VER \n DATE \n TIME \n DIR \n CAT \n EDIT nomfichier.extension Le nom est limité à 11 caractères, l'extension à 4 caractères \n DEL \n MKDIR \n RMDIR \n DEFRAG \n REPACK \n CP \n ECHO \n DRSPACE \n FORMAT \n CD \n CLS \n help : manuel \n ? : manuel \n man : manuel \n");
- }
-
- }
- }
-
- void initArrayRecord(rootDirectory arrayRecord[1024])
- {
- for (int i = 0 ; i < 1024; i++)
- {
- arrayRecord[i].rdID = 0;// identifiant 0 à 99 réservés
- strcpy(arrayRecord[i].rdName,"");
- strcpy(arrayRecord[i].rdExtension,"");
- arrayRecord[i].rdType = 2;
- arrayRecord[i].rdSize = 0;
- arrayRecord[i].rdTime = 0;
- arrayRecord[i].rdDate = 0;
- arrayRecord[i].rdFirstSecor = 0;
- arrayRecord[i].rdParent = 0;
- arrayRecord[i].rdAttrib = 0;
- arrayRecord[i].rdScan = 0;
- }
- }
- void initArrayRecord(dataSection arrayRecord[1024])
- {
- for (int i = 0 ; i < 1024; i++)
- {
- arrayRecord[i].dsID = 0;
- strcpy(arrayRecord[i].dsData,"");
- arrayRecord[i].dsPrev = 0;
- arrayRecord[i].dsNext = 0;
- }
- }
#include <string.h>
#include <string>
#include <time.h>
#include "types.h"
using namespace std;
void initArrayRecord(rootDirectory arrayRecord[1024]);
void initArrayRecord(dataSection arrayRecord[1024]);
char text [512];
int numéro = 99;
int incrementation = 0;
int kb ;
void main()
{
// la limite de compilation impose une taille raisonnées dans la limite des tableaux
rootDirectory rootDirectoryArrayRecord[1024]; // tableau enregistrement de rootDirectory
dataSection dataSectionArrayRecord[1024]; // // tableau enregistrement de dataSection
char commande[255]; // commande passée
// initialisation des structures
initArrayRecord(rootDirectoryArrayRecord);
while ( strcmp(commande,"exit") != 0 )
{
printf("? >");
gets(commande);
time_t *h=NULL;
time_t t;
if (strcmp(commande,"ver") == 0 )
{
printf("version 0.1 \n");
}
if (strcmp(commande,"date") == 0 )
{
int j = 0;
char date[255];
char realDate[255];
char realYear[5];
time_t rawtime;
t = time ( &rawtime );
sprintf(date,"%s",asctime(localtime(&t)));
strncpy(realDate,date,10);
realDate[10] = '\0';
j=0;
for (int i =20 ; i <strlen(date)-1; i++)
{
realYear[j] = date[i];
j++;
}
realYear[j] = '\0';
sprintf(realDate,"%s-%s",realDate,realYear);
printf("date : %s \n",realDate);
}
if (strcmp(commande,"time") == 0 )
{
int j = 0;
char date[255];
char realHour[255];
time_t rawtime;
t = time ( &rawtime );
sprintf(date,"%s",asctime(localtime(&t)));
j=0;
for (int i =11 ; i <20; i++) // prototype à vérifier pour les positions
{
realHour[j] = date[i];
j++;
}
realHour[j] = '\0';
printf("heure : %s \n",realHour);
}
///////////////////////////creation de fichier
if (commande[0] == 'e' && commande[1] == 'd' && commande[2] == 'i' && commande[3] == 't' )
{
char nom[255];
int j = 0;
int position;
int longueur = strlen(commande);
for (int i = 5; i< longueur; i++)
{
nom[j] = commande[i];
j++;
}
nom[j]='\0';
printf("nom fichier %s \n",nom);
char extension[4];
for (int i = 0; i < strlen(nom); i++)
{
if ( nom[i] == '.')
{
position = i;
i = 99;
}
}
j= 0;
for (int i = position+1; i< strlen(nom); i++)
{
extension[j] = nom[i];
j++;
}
extension[j]='\0';
numéro++;
incrementation ++;
printf("ext fichier %s \n",extension);
rootDirectoryArrayRecord[numéro].rdID = numéro;// identifiant 0 à 99 réservés
strcpy (rootDirectoryArrayRecord[numéro].rdName , nom); // ajout de nom
strcpy (rootDirectoryArrayRecord[numéro].rdExtension , extension);// extension
dataSectionArrayRecord[incrementation].dsID , incrementation; /// ID avec varriable incrementation pour le Fichier
rootDirectoryArrayRecord[numéro].rdFirstSecor , incrementation; /// Id avec varriable incrementation pour l'emplacement du contenu
rootDirectoryArrayRecord[numéro].rdType = 1;
printf("Contenu du fichier : \n");
gets(text);
strcpy(dataSectionArrayRecord[incrementation].dsData , text); //inserion du contenu dans la section data en recupérant l id
kb = strlen(text);
rootDirectoryArrayRecord[numéro].rdSize = kb;
printf("taille : %d kb\n",kb);
//insertion du poid en KB avec le nbr de char
if (strcmp (dataSectionArrayRecord[incrementation].dsData , text) ==0)
{
printf("Enregistrement ok\n");
}
else
{
printf(" Error de l'enregistrement\n");
}
printf("Quelle dossier ?\n");
/////////recherche du dossier ///////
gets(text);
int j1 = 0;
for (int i = 0; i< 1024; i++)
{
if (strcmp(rootDirectoryArrayRecord[i].rdName, text) ==0)
{
j1=i; //// id du dossier
i=1025;
printf("dossier trouver \n");
printf("Enregistrement total \n");
}
if (i == 1023)
{
printf(" Dossier introuvable\n");
printf(" Enregistrement partielle \n");
}
}
rootDirectoryArrayRecord[numéro].rdParent = j1; //// Le fichier prend la valeur de l id du dossier dans lequelle on l'ajoute
}
///////////////////////////////////////////////////////////////////////////////////
///////////// Création de dossier ////////////////////
if (commande[0] == 'm' && commande[1] == 'k' && commande[2] == 'd' && commande[3] == 'i' && commande[4] == 'r')
{
numéro ++;
char nom[255];
int j = 0;
int position;
int longueur = strlen(commande);
for (int i = 6; i< longueur; i++)
{
nom[j] = commande[i];
j++;
}
nom[j]='\0';
printf("nom dossier %s \n",nom);
rootDirectoryArrayRecord[numéro].rdID = numéro;// id de rootdirectory
rootDirectoryArrayRecord[numéro].rdType = 0;
strcpy (rootDirectoryArrayRecord[numéro].rdName , nom); /// affectation du nom du dossier
if (strcmp (rootDirectoryArrayRecord[numéro].rdName , nom)==0)
{
printf("Enregistrement ok\n");
printf("id = %d\n", numéro);
}
else
{
printf(" Error de l'enregistrement");
}
}
///////////////////// Dir ////////////////////
int numero2 =0;
int IDdossier;
char name [250];
char namedossier [250];
if (strcmp(commande,"dir") == 0 )
{
for (int i=99; i< 1024;i++)
{
rootDirectoryArrayRecord[i].rdScan = 0;
}
for (int i=99; i< 1024;i++)
{
if (( rootDirectoryArrayRecord[i].rdScan == 0) && (rootDirectoryArrayRecord[i].rdType == 1 )
&& (rootDirectoryArrayRecord[i].rdID != 0 )) // si c'est un fichier et qu'il n'a pas ete scan et qu'il a bien un ID
{
IDdossier = rootDirectoryArrayRecord[i].rdParent; //recupérartion de l'id du dossier
strcpy (name , rootDirectoryArrayRecord[IDdossier].rdName);
printf ("le nom du dossier est %s \n",name);
//scan des fichier ayant le meme nom que l'association IDname
for (int y=99; y< 1024;y++)
{
if (( rootDirectoryArrayRecord[y].rdScan == 0) && (rootDirectoryArrayRecord[y].rdType == 1 )
&& (rootDirectoryArrayRecord[y].rdID != 0 ) && (rootDirectoryArrayRecord[y].rdParent == IDdossier))
{
strcpy (namedossier , rootDirectoryArrayRecord[y].rdName);
printf (" le nom du fichier est %s \n",namedossier);
rootDirectoryArrayRecord[y].rdScan = 1;
}
}
}
}
}
////////////////////// cat ///////////////////////////
if (commande[0] == 'c' && commande[1] == 'a' && commande[2] == 't')
{
numéro ++;
char nom[255];
int j = 0;
int position;
int longueur = strlen(commande);
int id;
int poid;
int iddossier;
char nomdossier [250];
for (int i = 4; i< longueur; i++)
{
nom[j] = commande[i];
j++;
}
nom[j]='\0';
printf("nom fichier %s \n",nom);
for (int i =99; i<1024; i++)
{
if (strcmp(rootDirectoryArrayRecord[i].rdName, nom) ==0)
{
id = rootDirectoryArrayRecord[i].rdID;
printf("id du fichier est %d\n",id);
poid = rootDirectoryArrayRecord[i].rdSize;
printf("le poid du fichier est %d kb\n",poid);
iddossier = rootDirectoryArrayRecord[i].rdParent;
strcpy(nomdossier , rootDirectoryArrayRecord[iddossier].rdName);
printf("Il est dans le dossier %s\n",nomdossier);
}
}
}
////////////////////////////// defrag ////////////////////////////:
if (strcmp(commande,"defrag") == 0 )
{
for (int i = 98; i < 1024;i++)
{
if (strcmp (rootDirectoryArrayRecord[i].rdName , "")==0)
{
char name2 [250];
char extens [250];
int sector; // Emplacement du contenu
int type;
int size;
int id;
int parent;
int inc =0;
int j=0;
j = i;
while ( strcmp (rootDirectoryArrayRecord[j].rdName , "")==0) // Nombre de place vide aprés l'id
{
j++;
}
if ( rootDirectoryArrayRecord[j].rdType == 1) // Travail sur les fichier
{
///sauvegardes des valeurs
strcpy (name2 , rootDirectoryArrayRecord[j].rdName);
strcpy (extens , rootDirectoryArrayRecord[j].rdExtension);
sector = rootDirectoryArrayRecord[j].rdFirstSecor;
type = rootDirectoryArrayRecord[j].rdType;
size = rootDirectoryArrayRecord[j].rdSize;
parent = rootDirectoryArrayRecord[j].rdParent;
///suppresion des donnée
rootDirectoryArrayRecord[j].rdID = 0;
strcpy(rootDirectoryArrayRecord[j].rdName,"");
strcpy(rootDirectoryArrayRecord[j].rdExtension,"");
rootDirectoryArrayRecord[j].rdType = 2;
rootDirectoryArrayRecord[j].rdSize = 0;
rootDirectoryArrayRecord[j].rdTime = 0;
rootDirectoryArrayRecord[j].rdDate = 0;
rootDirectoryArrayRecord[j].rdFirstSecor = 0;
rootDirectoryArrayRecord[j].rdParent = 0;
rootDirectoryArrayRecord[j].rdAttrib = 0;
/// réatribution des données
rootDirectoryArrayRecord[i].rdID = i;
strcpy (rootDirectoryArrayRecord[i].rdName , name2);
strcpy (rootDirectoryArrayRecord[i].rdExtension , extens);
rootDirectoryArrayRecord[i].rdFirstSecor = sector;
rootDirectoryArrayRecord[i].rdType = type;
rootDirectoryArrayRecord[i].rdSize = size;
rootDirectoryArrayRecord[i].rdParent = parent;
printf(" le Fichier %s ayant l'id %d a ete déplacer a l'id %d\n",name2,j,i);
}
if ( rootDirectoryArrayRecord[j].rdType == 0) // travail sur les dossier
{
// sauvegarde des données
id = rootDirectoryArrayRecord[j].rdID;
strcpy (name2 , rootDirectoryArrayRecord[j].rdName);
type = rootDirectoryArrayRecord[j].rdType;
// suppression des données
strcpy(rootDirectoryArrayRecord[j].rdName,"");
type = rootDirectoryArrayRecord[j].rdType;
//réatribution des données
rootDirectoryArrayRecord[i].rdID = i;
strcpy (rootDirectoryArrayRecord[i].rdName , name2);
rootDirectoryArrayRecord[i].rdType = type;
printf(" le Dossier %s ayant l'id %d a ete déplacer a l'id %d\n",name2,j,i);
for (j = 99; j<1024; j++)
{
if (rootDirectoryArrayRecord[j].rdParent = id)
{
rootDirectoryArrayRecord[j].rdParent = i;
}
}
}
}
if (strcmp (dataSectionArrayRecord[i].dsData,"")) ////travail sur les données
{
int j;
int id;
char contenu2[512];
j = i;
while (strcmp (dataSectionArrayRecord[j].dsData ,"")) // Nombre de place vide aprés l'id
{
j++;
}
id = dataSectionArrayRecord[j].dsID;
strcpy (contenu2 , dataSectionArrayRecord[j].dsData);
//suppresion des données
dataSectionArrayRecord[i].dsID = 0;
strcpy(dataSectionArrayRecord[i].dsData,"");
//reatribution des données
dataSectionArrayRecord[i].dsID = i;
strcpy (dataSectionArrayRecord[i].dsData , contenu2);
for(j=99; j<1024;j++)
{
if (rootDirectoryArrayRecord[j].rdFirstSecor == id)
{
rootDirectoryArrayRecord[j].rdFirstSecor = i;
}
}
}
}
}
/////////////////////delf///////////////////
if (commande[0] == 'd' && commande[1] == 'e' && commande[2] == 'l' && commande[3] == 'f' )
{
char nom[255];
int sector;
int j = 0;
int position;
int longueur = strlen(commande);
for (int i = 5; i< longueur; i++)
{
nom[j] = commande[i];
j++;
}
nom[j]='\0';
for (j =99 ; j<1024; j++)
{
if ((strcmp (rootDirectoryArrayRecord[j].rdName , nom)==0) && (rootDirectoryArrayRecord[j].rdType == 1))
{
sector = rootDirectoryArrayRecord[j].rdFirstSecor;
rootDirectoryArrayRecord[j].rdID = 0;
strcpy(rootDirectoryArrayRecord[j].rdName,"");
strcpy(rootDirectoryArrayRecord[j].rdExtension,"");
rootDirectoryArrayRecord[j].rdType = 2;
rootDirectoryArrayRecord[j].rdSize = 0;
rootDirectoryArrayRecord[j].rdTime = 0;
rootDirectoryArrayRecord[j].rdDate = 0;
rootDirectoryArrayRecord[j].rdFirstSecor = 0;
rootDirectoryArrayRecord[j].rdParent = 0;
rootDirectoryArrayRecord[j].rdAttrib = 0;
for (int h =99; h<1024; h++)
{
if (dataSectionArrayRecord[h].dsID == sector)
{
dataSectionArrayRecord[h].dsID = 0;
strcpy(dataSectionArrayRecord[h].dsData,"");
}
}
printf("effacement ok \n");
}
}
}
////////////////deld/////////////////////////////
if (commande[0] == 'd' && commande[1] == 'e' && commande[2] == 'l' && commande[3] == 'd' )
{
char nom[255];
int j = 0;
int position;
int longueur = strlen(commande);
int type;
for (int i = 5; i< longueur; i++)
{
nom[j] = commande[i];
j++;
}
nom[j]='\0';
for (j =99 ; j<1024; j++)
{
if ((strcmp (rootDirectoryArrayRecord[j].rdName , nom)==0) && (rootDirectoryArrayRecord[j].rdType == 0))
{
strcpy(rootDirectoryArrayRecord[j].rdName,"");
type = rootDirectoryArrayRecord[j].rdType;
///////////////////////////////////////////////////fdvf
printf("effacement ok \n");
}
}
}
//////////////////////////////////////////////////////
if (strcmp(commande,"drspace") == 0 )
{
if (rootDirectoryArrayRecord[0].rdType == ' ')
{
printf("Drive empty, 100%% free \n");
}
}
if (strcmp(commande,"?") == 0 || strcmp(commande,"help") == 0 || strcmp(commande,"man") == 0)
{
printf("VER \n DATE \n TIME \n DIR \n CAT \n EDIT nomfichier.extension Le nom est limité à 11 caractères, l'extension à 4 caractères \n DEL \n MKDIR \n RMDIR \n DEFRAG \n REPACK \n CP \n ECHO \n DRSPACE \n FORMAT \n CD \n CLS \n help : manuel \n ? : manuel \n man : manuel \n");
}
}
}
void initArrayRecord(rootDirectory arrayRecord[1024])
{
for (int i = 0 ; i < 1024; i++)
{
arrayRecord[i].rdID = 0;// identifiant 0 à 99 réservés
strcpy(arrayRecord[i].rdName,"");
strcpy(arrayRecord[i].rdExtension,"");
arrayRecord[i].rdType = 2;
arrayRecord[i].rdSize = 0;
arrayRecord[i].rdTime = 0;
arrayRecord[i].rdDate = 0;
arrayRecord[i].rdFirstSecor = 0;
arrayRecord[i].rdParent = 0;
arrayRecord[i].rdAttrib = 0;
arrayRecord[i].rdScan = 0;
}
}
void initArrayRecord(dataSection arrayRecord[1024])
{
for (int i = 0 ; i < 1024; i++)
{
arrayRecord[i].dsID = 0;
strcpy(arrayRecord[i].dsData,"");
arrayRecord[i].dsPrev = 0;
arrayRecord[i].dsNext = 0;
}
}
Conclusion
Fait en cour en IG1 à godefroy de bouillon 63000
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
MultiThread et gestion fichier [ par bullman2 ]
Le but du jeu est de comprendre pourquoi le fclose renvoi des fois (-1) quand on a une gestion Multitrhead. Cela me pause un reèl problème pour la ges
gestion des erreurs [ par golum ]
Voila en grosif ((fic=fopen(chemfic,"rb"))==NULL){printf("Impossible d'ouvrir le fichier %s \n",chemfic);je voulait savoir s'il était possible et comm
scanner un dossier??turboC++ [ par idk ]
J'aimerai scanner un dossier, et mettre les noms de fichier en string!ex: dans un dossier, il y a des fichier wad, tar.wad, tir.wadEt je veux, sous fo
Probleme de gestion de fichier et gestion de l ehrue en C [ par croft ]
Mr.croftG un probleme avec un fichier texte contenant un mot sur chaque ligne .Il me faudrait un code qui pourrrait me ressortir aleatoirment un mot d
gestion de fichier en C++ [ par croftlou ]
Bonjour je suis debutant en C++, je desire faire un petit projet en C+++, pour gere des des fichiers en lecture et en ecriture.Pour cela ej voudrai cr
repertoire, dossier, fichier et disc dur ... [ par zinotron ]
je souhaite devellopper un prog ki soit capable de me donner le meme resultat que la commande tree (MS-DOS) mais qui soit portable (cad sans findnextf
Gestion de flux [ par djfab ]
Bonjour,J'ai une petite question à propos des fluxJ'inclu fstream.h, je crée un objet fic, je fais fic.open("fichier.dat", ios:in)Et là, en fait, bah,
Choisir un dossier et pas un fichier [ par MrEddy ]
Salut,Je recherche comment pouvoir selectionner un dossier. J'ai essayer l'api GetOpenFileName, cependant avec celle ci, je n'arrive pas à selectionne
gestion de fichier [ par franc015 ]
salut !!!voila je débute et je dois faire un prog. je dispose d'un fichier texte ( en fait une liste de fichier avec des retours chariot entre chaque
differencier fichier/dossier [ par glipper ]
Bonjour,je voudrais juste savoir quelle fonction utiliser pour faire la difference entre un fichier et un dossier... j'ai essayé d'utiliser la fonctio
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MATRICE TEMPLATEMATRICE TEMPLATE par hjr2610
Cliquez pour lire la suite par hjr2610 RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|