目次
[目次]
計算機のRAMメモリーの様な記憶装置を一次記憶、ハードディスク、CD-ROM、フロッピーディスク等を二次記憶といいます。この二次記憶による情報の保存には通常はファイルシステムが使われます。ファイルは一列に並んだデータのまとまりです。ファイルシステムはこのファイルを記憶装置に保存する為のシステムです。
ファイルシステムでファイルを書き込む時は、複数のファイルを区別する為に識別用の名前(ファイル名)を付ける必要があります。読み出すときはファイルシステムにこの名前を渡してファイルを受け取ります。
ところで、ファイルシステムは上記の処理を行う為に、ファイル名とファイルの場所を記録した住所録(ディレクトリ)を使います。この住所録も二次記憶装置の決められた場所に保存しておきます。(そうしないと電源を切ったときに住所録が消えてしまう)
[目次]
ファイルは名前で識別するので同じ名前のファイルは作れません。ファイルの数が増えてくると名前の衝突が大きな問題になります。名前の衝突を減らすためにファイルをまとめるフォルダを作り、この中にファイルを格納することにします。ファイルの識別をフォルダ名+ファイル名で行えば名前の衝突は起きにくくなります。さらにフォルダの中にフォルダを入れることで、ファイルを階層的に整理できます。
フォルダは中身のファイルやフォルダの名前と場所を記録したディレクトリファイルとして実装できます。この様にすればフォルダをファイルの一種として扱えるのでファイルシステムはあまり複雑にならずに済みます。以下にフォルダを用いて階層的に整理されたWindowsのファイル構造を示します。
上図では上がフォルダで下が中身の順になっています。ここで上のフォルダを下のフォルダに入れるような操作を行うとエラーになり実行できません。つまり、このファイル構造は木構造となります。
(注)木構造の不便な点を補うためWindowsにはショートカットファイル と呼ばれる仕組みがあります。上のフォルダのショートカットなら下のフォルダに入れることが可能です。
[目次]
上の様なフォルダで階層化された構造からファイルを指定するとき、ファイル名はドライブ名から目的のファイルまでの道順(path)を全て一列に並べた名前となります。上の例でCalc.exeファイルの名前は「\」を区切り文字として
C:\WINNT\system32\Calc.exe
この様な名前を絶対パス(フルパスとも言う)と言います。絶対パスは木構造の一番上(これをルート:rootと言う)からの道順で示された名前です。
自分が注目している特定のフォルダ(ディレクトリ)をカレントディレクトリとして、ここからの道順でファイルを指定する名前を相対パスと言います。いつも絶対パスを書くのでは大変ですから、普通は自分の仕事に関連するファイルをまとめたフォルダをカレントディレクトリに設定して相対パスでファイル名を指定するのが一般的です。
今カレントディレクトリがC:\WINNT\system32ならCalc.exeファイルの名前は相対パスで
Calc.exe
と簡潔になります。相対パスではディレクトリ階層をさかのぼることも必要になるので、1個上のフォルダは「..」で示します。カレントディレクトリがC:\WINNT\system32からのNotepad.exeやboot.iniファイルの相対パスはそれぞれ
..\Notepad.exe
..\..\boot.ini
となります。
相対パスを使ってファイル指定すれば、フォルダごと別の場所に移動しても、カレントディレクトリの変更だけですむ利点があります。プログラムを実行するときカレントディレクトリが何処なのかはとても重要です。既定値はプログラムの実行ファイルが置かれたディレクトリです。
カレントディレクトリの設定方法は「6.コマンドラインの使い方」で説明します。
[目次]
WindowsやUNIXでは環境変数と呼ばれるプログラムが共有できる変数があります。そのいくつかは使い方が決められていますが、特にPath変数は重要です。この変数は相対パスで示されたファイルがカレントディレクトリからのパスで見つからない場合に、ファイルを捜す起点のディレクトリが複数登録されています。環境変数はコマンドラインモードでsetコマンドを使って下記の様に見ることができます。下記のPathの値の中で「;」は区切り記号です。
[目次]C:\>set ALLUSERSPROFILE=C:\Documents and Settings\All Users APPDATA=C:\Documents and Settings\Administrator\Application Data CommonProgramFiles=C:\Program Files\Common Files COMPUTERNAME=EDU ComSpec=C:\WINNT\system32\cmd.exe HOMEDRIVE=C: HOMEPATH=\ LOGONSERVER=\\EDU NUMBER_OF_PROCESSORS=1 OS=Windows_NT Path=.;C:\Perl\bin\MSWin32-x86-object;C:\Perl\bin;C:\cy gnus\cygwin-b20\H-i586-cygwin32\bin;D:\jdk1.3.1_01\bin;C:\WINNT\system32;C:\WINN T;C:\WINNT\System32\Wbem PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 6 Model 7 Stepping 2, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=0702 ProgramFiles=C:\Program Files PROMPT=$P$G SystemDrive=C: SystemRoot=C:\WINNT TEMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp TMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp USERDOMAIN=EDU USERNAME=Administrator USERPROFILE=C:\Documents and Settings\Administrator windir=C:\WINNT
UNIXやWindowsではファイルの種類を判別する為にファイル名の最後に拡張子と呼ばれる名前を加えます。例えば、Windowsのファイルで名前の最後が「.exe」となっているのは実行可能なプログラムファイル、「.txt」となっているのはテキストファイルです。
この拡張子はファイルのアイコンをマウスでダブルクリックした時の動作なども決めています。 ファイルの拡張子がexeの場合、ファイルをプログラムとしてメモリーに読み込んで実行します。あるいは.txtの場合はに関連付されたテキストエディターを起動してそのファイルを渡します。ファイルのアイコンも実は拡張子で決まる場合が多いのです。その拡張子に関連付けされたプログラムが用意したアイコンが表示されるのです。例えば、上の図のindex.htmlファイルはNetscapeブラウザに関連付けされているのがわかります。
(注)Netscapeブラウザを初めてインストールした時に、それまでInternetExplorerのアイコンだった拡張子.htmlのファイルが全部Netscapeのアイコンに変った経験は有りませんか。新しいエディターのインストールでは.txtのファイルのアイコンが全部変ったことはないでしょうか。これらは、拡張子の関連付けが変化した結果です。これは、関連付けにファイル名を利用している為です。そこで、MacOSの場合は拡張子を使わずファイルごとに関連情報をファイルの中身とは別に持つ仕組みになっています。細かい管理が可能です。仕組みは複雑になりますが、プログラムをインストールするたびにアイコンが変化したりはしません。
[目次]
WindowsなどのGUI環境でパソコンを使っていると、キーボードからコマンドを打ち込んでプログラムを実行するGUI以前のCUI(キャラクターベースのユーザーインターフェイス)のことを忘れてしまいます。実際MacOSはGUIしか用意していません。
昔は文字を表示することしかできないキャラクター端末の画面を見ながらキーボードからコマンドライン(命令文)を打ち込んで、プログラムを実行し、結果は端末の画面に文字として表示されていました。この様な環境を前記の様にCUIと言います。UNIXやMSDOS等はこの環境で使われるOSでした。その後グラフィック端末やマウスが普及し、現在のGUIが使われる様になり、UNIXのX-WindowやパソコンのWindowsの様なGUIを利用する機能が加えられました。
WindowsではGUI環境の中でCUI環境を実現するウインドウを開くことができます。Windowsには「コマンドプロンプト」と言うプログラムが標準で用意されています。コマンドプロンプトを起動すると下記の様なウインドウが開きます。
画面の中の
C:\> のマークをコマンドプロンプトといい「命令入力を促す文字列」です。ここに下記のようなさまざまな命令を打ち込みreturnキーを押して命令を送り、実行します。
Windowsではカレントディレクトリがドライブごとに存在します。従ってカレントドライブとカレントディレクトリが有ることになります。コマンドchdirでこれらを表示したり、変更したりできます。
dir [/d] [ドライ部名:][パス名]
/d 無し ドライブ名有 省略 パス名有り 指定ドライブのカレントディレクトリを指定パスに変更 カレントドライブのカレントディレクトリを指定パスに変更 省略 指定ドライブのカレントディレクトリを表示 カレントドライブのカレントディレクトリを表示
cd カレントドライブとカレントディレクトリの表示
cd C: Cドライブのカレントディレクトリの表示
cd D: Dドライブのカレントディレクトリの表示
/d オプションを付けるとカレントドライブも変更する
/d 有り ドライブ名有 省略 パス名有 カレントドライブとディレクトリを指定値に変更 カレントドライブのカレントディレクトリを指定パスに変更 省略 カレントドライブを指定ドライブに変更 カレントドライブのカレントディレクトリを表示
cd /d C: カレントドライブをCドライブに変更
cd /d D:\mizuno カレントドライブをDドライブにDドライブのカレントディレクトリを\mizunoに変更
※ パス名には相対パスが使えます
ディレクトリにはファイルとフォルダがありますが、これらの名前や大きさ作成日等をオプションで指定された形式で表示します。オプションはあまりに多いのでWindowsのヘルプを見てください。以下にはよく使いそうな形のみを示します。
dir カレントドライブのカレントディレクトリの情報を表示
dir [ドライ部名:][パス名] 指定したドライブのディレクトリの情報を表示
dir [ファイル名] ファイル名のファイル情報を表示
ファイル名には複数のファイル名を指定できます。ファイル名は、スペース、カンマ、またはセミコロンで区切ります。
ファイル名にワイルドカード文字「?」 や 「*」 を使うとができます。dir *.java 拡張子がjavaのファイルだけを表示
拡張子がexeのファイルは実行可能ファイルで、プロンプトの後に命令としてファイル名を入れると、そのプログラムをメモリーに読込んで実行します。
javaのソースファイルをコンパイルする場合は、javaコンパイラの実行可能ファイル javac.exe を実行するので
javac ファイル名.java
javaVMで実行する場合は javaVMの実行可能ファイル java.exe を実行するので
java クラス名 [mainメソッドに渡す引数並び]
となります。
※カレントディレクトリにjava.exe等が無い場合は先に説明したPATH変数に指定されたディレクトリから実行可能ファイルを捜します。