Ouvrir un fichier , un répertoire sous Windows

  • Flashback sur la R13

Cette fonction a fait son apparition avec MATLAB 6.5.

En allant sur les releases de l’époque , on apprend que winopen a fait son apparition avec des fonctions bien connues comme:

  • rmdir : Remove directory
  • movefile : Move file or directory
  • winopen : Open file in appropriate application (Windows only)
  • xmlread : Parse XML document and return Document Object Model node

Pour les deux premières rmdir et movefile, je me demande comment les programmateurs faisaient pour supprimer un répertoire ou déplacer des fichiers !

On apprend aussi que des fonctions qui appartenaient à la Neural Network Toolbox comme:

  • cell2mat : Combine a cell array of matrices into one matrix
  • mat2cell : Break matrix up into a cell array of matrices

ont été inclues dans MATLAB. La pareil ça a du faire des heureux !

Et pour terminer ce flashback des releases notes de la R13 , on peut lire :

Since dynamic field names improve on the getfield and setfield functions, these two functions will eventually be removed from the MATLAB language.

mouais , 10 ans plus tard les fonctions getfield et setfield sont toujours présentes , c’est là que le mot eventually prend tout son sens !

  • quand utiliser winopen :

Voilà ce que nous le dit le help de winopen :

winopen help

Moi je l’utilise tous les jours pour ouvrir rapidement le répertoire courant où je suis:

>>winopen .

Autre exemple, pour ouvrir le répertoire où sont stockées les préférences de MATLAB, je tape au prompt MATLAB:

>>winopen(prefdir)

Donc en un coup de cuillère à pot, voilà mon répertoire prefdir ouvert:

prefdir

Je l’utilise dans mes codes aussi pour ouvrir un fichier dans l’application désirée de Windows:

>> f = figure;
>> surf(peaks);
>> print (gcf, '-dbmp', 'myfile.bmp')
>> winopen('myfile.bmp')

Dans mon cas , la figure va s’ouvrir avec Windows Picture and Fax Viewer :

surf peaks

Cette note technique vous sera d’ailleurs utile pour que winopen fonctionne avec n’importe quel fichier:
How do I open a file in a choosen application from within MATLAB?

  • Limitation

Comme indiqué dans ma première phrase , je l’utilise que sous Windows . Vous n’avez pas le choix d’ailleurs car le premier test effectué dans winopen.m c’est ispc
:

ispc winopen

  • Comment winopen fonctionne

Autant winopen.m est éditable dans MATLAB, autant on n’a rien à se mettre sous la dent pour comprendre la façon dont ça marche.
La dernière ligne de code est: win_open_mex(pathstr, filename);

Rien qu’en regardant les 3 dernières lettres (mex) on se dit que c’est un MEX-file (une dll) qui est appelée. Et un bon vieux which va confirmer ce doute:

>> which win_open_mex -all
C:\MATLAB\SOF\r2010b\toolbox\matlab\winfun\private\win_open_mex.mexw32  % Private to winfun

ce qui signifie en d’autre termes que le code est illisible ou protégé intellectuellement.

C’est d’ailleurs dans le répertoire toolbox\matlab\winfun\private\ qu’on découvre un autre fichier intéressant fileassoc.m que je vous laisse découvrir …
cd(fullfile(matlabroot,'toolbox','matlab','winfun','private'))

Laisser un commentaire