.NET > ファイルシステム


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Reader/Writer

用途 読み込み 書き込み 生成方法 解説
文字列 StringReader StringWriter コンストラクタ 内部はStringBuilder([[StringWriterについて>./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); // マイドキュメントを取得

読んでいる本


Effective C#

QLOOKアクセス解析

ここを編集