ファイルシステム
最終更新:
atachi
Reader/Writer
用途 | 読み込み | 書き込み | 生成方法 | 解説 |
文字列 | StringReader | StringWriter | コンストラクタ | 内部はStringBuilder(StringWriterについて) |
ストリーム | StreamReader | StreamWriter | コンストラクタ | ローカルファイルならば単体での読み書きが可能 |
テキストファイルの入出力
ファイルへの書き込みにはStreamWriter、ファイルからの読み込みにはStreamReaderを使用します。
// ◆ファイルへの書き込み
using(StreamWriter iowriter = new StreamWriter(@"c:\test.txt")){
iowriter.WriteLine("1行分の書き込み"); // WriteLine()では自動的に末尾に改行コードが追加されます。
}
// ◆ファイルからの読み込み
using(StreamReader ioreader = new StreamReader(@"c:\test.txt")){
var oneline = ioreader.ReadLine(); // 1行分(正確には、文頭から改行コードまで)を読み込みます。
Console.WriteLine(oneline);
}
バイナリファイルの入出力
画像の簡単な読み込み方法
画像を読み込むにはIOを使うかGDI+がサポートするImage.FromFileメソッドを使用します。
Image.FromFileメソッドを使用するとファイルパスを与えるだけで画像を読み込むことができます。
ただし、読み込むことができる画像形式はGDI+がサポートするフォーマットの画像のみです。
using System.Drawing;
Image image = Image.FromFile(@"C:\myimg.jpg");
Stream
様々な経路からの入出力をストリームと呼び、入出力を行う基本的なインターフェースがInputStream・OutputStreamです。
経路にはファイルやコンソール、ネットワークなどが存在します。
経路から任意の構造でデータを読み書きするインターフェースをReader・Writerと呼びます。
Reader・Writerとストリームは組み合わせて使用します。
ネットワークストリーム
ネットワーク上からの入出力を行うためのStreamです。
- NetworkStream
- Socket
ドライブ
ドライブの一覧を取得
class Program {
static void Main(string[] args) {
string [] drives = Directory.GetLogicalDrives();
foreach (string str in drives) {
System.Console.WriteLine(str);
}
System.Console.ReadLine(); // プロンプトが自動的の閉じるのを防止
}
}
C:\ D:\ E:\
ドライブ容量を取得
class Program {
static void Main(string[] args) {
DriveInfo info = new DriveInfo("C");
Console.WriteLine("領域サイズ:" + info.TotalSize);
Console.WriteLine("空き容量:" + info.TotalFreeSpace);
Console.WriteLine("現在ユーザーの空き容量:"
+ info.AvailableFreeSpace);
System.Console.ReadLine();
}
}
容量サイズ:785341698 空き容量:451357834 現在ユーザーの空き容量:451357834
ファイル
ディレクトリの操作や情報はDirectoryInfoを使用します。
ディレクトリの有無 | Directory.Exists | |
ディレクトリ内のファイル一覧 | Directory.GetFiles(string) | |
Directory.GetFiles(string,string) | パターンマッチ | |
サブディレクトリも検索対象とする機能もあります。 | ||
ディレクトリ内のディレクトリ一覧 | Directory.GetDirectories(string) | |
Directory.GetDirectories(string,string) | パターンマッチ | |
サブディレクトリも検索対象とする機能もあります。 | ||
ディレクトリ作成 | Directory.CreateDirectory | |
ディレクトリ削除 | Directory.Delete | |
ディレクトリ移動 | Directory.Move | |
ファイルの有無 | File.Exists | |
ファイル作成 | File.Create | |
ファイル削除 | File.Delete | |
ファイル移動 | File.Move | |
ファイルコピー | File.Copy | |
拡張子取得 | Path.GetExtension(string) | 拡張子は「.txt」のように取得できる。 |
ファイル名部分の取得 | Path.GetFileName | フルパスなどからファイル名部分のみを取得する。 |
ディレクトリ内のファイル一覧の取得
次の方法はディレクトリ内のファイルのみをリストアップします。
class Program {
static void Main(string[] args) {
DirectoryInfo directory = new DirectoryInfo( @"C:\");
FileInfo [] files;
files = directory.GetFiles();
foreach (FileInfo fi in files) {
Console.WriteLine(fi.FullName);
}
System.Console.ReadLine();
}
}
C:\.rnd C:\AUTOEXEC.BAT C:\boot.ini C:\bootfont.bin
DirectoryInfo.GetFiles は引数に検索条件を含めることができるので、テキストファイルだけをリストアップするといった処理も行える。
class Program {
static void Main(string[] args) {
DirectoryInfo directory = new DirectoryInfo( @"C:\");
FileInfo [] files;
files = directory.GetFiles("*.ini"); // iniファイルのみ
foreach (FileInfo fi in files) {
Console.WriteLine(fi.FullName);
}
System.Console.ReadLine();
}
}
C:\boot.ini
ディレクトリ内のディレクトリ一覧の取得
class Program {
static void Main(string[] args) {
DirectoryInfo directory = new DirectoryInfo( @"C:\");
DirectoryInfo [] dirs;
dirs = directory.GetDirectories()();
foreach (DirectoryInfo di in dirs) {
Console.WriteLine(di.FullName);
}
System.Console.ReadLine();
}
}
ディレクトリの作成
ディレクトリが存在しない場合にのみディレクトリを作成します。
class Program {
static void Main(string[] args) {
DirectoryInfo directory = new DirectoryInfo(@"C:\Test");
if(directory.Exists()){
directory.Create();
}
}
}
サブディレクトリの作成
この例ではすでに存在するディレクトリにサブディレクトリを作成します。
class Program {
static void Main(string[] args) {
DirectoryInfo directory = new DirectoryInfo(@"C:\Test");
DirectoryInfo subDirectory = directory.CreateSubdirectory("Test Directory");
}
}
特殊ファイルやフォルダ
特殊なフォルダとは、デスクトップやマイドキュメントなどのユーザーごとに環境設定で変更可能なフォルダやProgramFilesなどのシステムが使用するフォルダを指します。
取得可能な特殊フォルダ
Environment.SprcialFolder列挙体 で定義されています。
定義名 | 取得パス(サンプル) | 説明 |
Personal | C:\Users\XXXX\My Documents | マイドキュメントを取得します。 |
Desktop | C:\Users\XXXX\Desktop | デスクトップを取得します。 |
Favorites | C:\Users\XXXX\Favorites | お気に入りを取得します。 |
ProgramFiles | C:\Program Files | プログラムフォルダを取得します。 |
Windows | C:\Windows | ウィンドウズフォルダを取得します。 |
Startup | スタートアップフォルダを取得します。 |
System.Environment.GetFolderPath(Environment.SpecialFolder.Personal); // マイドキュメントを取得