C#の読み書きおよびファイル操作(File,FileMode)
一、ファイルを読み取る
読み込むファイルの内容がそれほど多くない場合は、
Fileを使用できます.ReadAllText(FilePath)または指定符号化方式File.ReadAllText(FilePath,Encoding)の方法.
一度にテキストの内容をすべて読み終え、すべてのテキストの内容を含む文字列を返します.
string str = File.ReadAllText(@"c:\temp\ascii.txt");//符号化方式string str 2=Fileを指定することもできる.ReadAllText(@"c:\temp\ascii.txt", Encoding.ASCII);
方法Fileも使用可能である.ReadAllLines.このメソッドは文字列配列を返します.各行は配列要素です.
string[] strs = File.ReadAllLines(@"c:\temp\ascii.txt");//符号化方式string[]strs 2=Fileを指定することもできる.ReadAllLines(@"c:\temp\ascii.txt", Encoding.ASCII);
テキストの内容が大きい場合、
テキストの内容を一度に読むのではなく、ストリーム(Stream)で読むべきだ.NetはStreamReaderクラスをカプセル化してくれました.
StreamReaderクラスを初期化するには、さまざまな方法があります.
StreamReader sr1 = new StreamReader(@"c:\temp\utf-8.txt");//同じく符号化方式StreamReader sr 2=new StreamReader(@「c:temputf-8.txt」,Encoding.UTF 8);
FileStream fs = new FileStream(@"C:\temp\utf-8.txt", FileMode.Open, FileAccess.Read, FileShare.None); StreamReader sr3 = new StreamReader(fs); StreamReader sr4 = new StreamReader(fs, Encoding.UTF8); FileInfo myFile = new FileInfo(@"C:\temp\utf-8.txt");//OpenText UTF-8でエンコードされたStreamReaderオブジェクトStreamReader sr 5=myFileを作成します.OpenText();//OpenText UTF-8でエンコードされたStreamReaderオブジェクトStreamReader sr 6=Fileを作成します.OpenText(@"C:\temp\utf-8.txt");
初期化が完了すると、1行ずつ読んだり、1文字ずつ読んだり、数文字ずつ読んだり、すべての内容を一度に読んだりすることができます.
//string nextLine=sr.ReadLine()を1行読みます.//int nextChar=sr.Read();//100文字を読むint nChars=100; char[] charArray = new char[nChars]; int nCharsRead = sr.Read(charArray, 0, nChars);//string restOfStream=sr.ReadToEnd();
StreamReaderを使用した後、閉じることを忘れないでください.
sr.Closee();
1行1行の読み取りが必要な場合は、テキストファイル全体を読み終え、完全な例を見てみましょう.
StreamReader sr = File.OpenText(@"C:\temp\ascii.txt"); string nextLine; while ((nextLine = sr.ReadLine()) != null) { Console.WriteLine(nextLine); } sr.Close();
二、書類を書き取る
あまり書かないと、
Fileを使用できます.WriteAllTextメソッドは一度に内容をすべてファイルのように書きます.
文字列の内容をファイルに書き込む場合は、Fileを使用します.WriteAllText(FilePath)または指定符号化方式File.WriteAllText(FilePath,Encoding)メソッド.
string str1 = "Good Morning!";
File.WriteAllText(@"c:\temp\test\ascii.txt", str1);
//符号化方式の指定も可能
File.WriteAllText(@"c:\temp\test\ascii-2.txt", str1, Encoding.ASCII);
文字列配列がある場合は、各文字列要素をファイルに書き込むには、Fileを使用します.WriteAllLinesメソッド:
string[] strs = { "Good Morning!", "Good Afternoon!"};
File.WriteAllLines(@"c:\temp\ascii.txt", strs);
//符号化方式の指定も可能
File.WriteAllLines(@"c:\temp\ascii-2.txt", strs, Encoding.ASCII);
Fileを使用します.WriteAllTextまたはFile.WriteAllLinesメソッドの場合、指定したファイルパスが存在しない場合、新しいファイルが作成されます.ファイルが既に存在する場合は、元のファイルが上書きされます.
書き込む内容が多い場合は、
同様にストリーム(Stream)方式で書き込む.NetパッケージのクラスはStreamWriterです.
StreamWriterクラスを初期化するには、次のような方法があります.
//ファイルが存在しない場合は、ファイルを作成します.存在する場合、上書きファイルStreamWriter sw 1=new StreamWriter(@"c:temputf-8.txt");//符号化方式//trueはappend text、falseは元のファイルを上書きするStreamWriter sw 2=new StreamWriter(@「c:temputf-8.txt」,true,Encoding.UTF 8); //FileMode.CreateNew:ファイルが存在しない場合は、ファイルを作成します.ファイルが既に存在する場合は、例外FileStreamfs=new FileStream(@「C:temputf-8.txt」,FileMode.CreateNew,FileAccess.Write,FileShare.Read);//UTF-8はデフォルト符号化StreamWriter sw 3=new StreamWriter(fs); StreamWriter sw4 = new StreamWriter(fs, Encoding.UTF8);//ファイルが存在しない場合は、ファイルを作成します.存在する場合、ファイルFileInfo myFile=new FileInfo(@「C:temputf-8.txt」)を上書きします. StreamWriter sw5 = myFile.CreateText();
初期化が完了すると、StreamWriterオブジェクトで1行、1文字、1文字配列、さらには1文字配列の一部を一度に書き込むことができます.
//文字を書くsw.Write('a');//文字配列を書くchar[]charArray=new char[100]; //initialize these characters sw.Write(charArray);//文字配列の一部を書くsw.Write(charArray, 10, 15);
同様に、StreamWriterオブジェクトの使用が完了したら、閉じることを忘れないでください.
sw.Close();
最後に、StreamWriterを使用して一度に1行を書き込む完全な例を見てみましょう.
FileInfo myFile = new FileInfo(@"C:\temp\utf-8.txt"); StreamWriter sw = myFile.CreateText(); string[]strs={「おはよう」「こんにちは」}; foreach (var s in strs) { sw.WriteLine(s); } sw.Close();
ファイルの読み書きその他の操作
1,ReadAllBytes()関数は,ファイル内の文字内容をbyte配列に変換して返す.
ケース)ファイルを読み込み、コンソールに出力する
2,ReadAllLines()メソッドは、テキストファイルを行で読み込み、文字列配列を返します.
3,ReadAllText()メソッド,テキストを読み出し,文字列を返す
4,WriteAllBytes()メソッド、ファイルをバイナリで書き込む
5,WiteAllLines()メソッド,行でファイルを書き込む
6,WriteAllText()メソッド、文字列でファイルを書き込む
7,AppendAllText()メソッドは、追加でファイルに書き込まれ、既存のファイルの内容は上書きされません
ファイル操作のFileMode
一.FileMode.Append
Append追加:
ファイルが存在する場合は、ファイルを開き、ファイルの末尾にポインタを指します.存在しない場合は、新しいファイルを作成します.
二.FileMode.Create
Create:新規作成
ファイルが存在する場合は、既存のファイルを上書きし、ポインタをファイルの開始に指し示し、ファイルの作成日が更新されます.
ファイルが存在しない場合は、新しいファイルを作成します.
三.FileMode.CreateNew
CreateNew:新規ファイル
ファイルが存在する場合、例外が発生します.ファイルが存在しない場合、例外が発生します.
四.FileMode.OpenOrCreate
OpenOrCreate:開くまたは新規
ファイルが存在する場合は、ファイルを開き、ファイルの開始にポインタを指します.ファイルが存在しない場合は、新しいファイルを作成します.
五.FileMode.Truncate
ファイルが存在する場合は、ファイルを開き、そのファイルの内容を消去し、ポインタをファイルの開始に指し、最初のファイルの作成日(書き換え)を保持します.ファイルが存在しない場合、例外が発生します.
六.FileMode.Open
Open:ファイルを開く
読み込むファイルの内容がそれほど多くない場合は、
Fileを使用できます.ReadAllText(FilePath)または指定符号化方式File.ReadAllText(FilePath,Encoding)の方法.
一度にテキストの内容をすべて読み終え、すべてのテキストの内容を含む文字列を返します.
string str = File.ReadAllText(@"c:\temp\ascii.txt");//符号化方式string str 2=Fileを指定することもできる.ReadAllText(@"c:\temp\ascii.txt", Encoding.ASCII);
方法Fileも使用可能である.ReadAllLines.このメソッドは文字列配列を返します.各行は配列要素です.
string[] strs = File.ReadAllLines(@"c:\temp\ascii.txt");//符号化方式string[]strs 2=Fileを指定することもできる.ReadAllLines(@"c:\temp\ascii.txt", Encoding.ASCII);
テキストの内容が大きい場合、
テキストの内容を一度に読むのではなく、ストリーム(Stream)で読むべきだ.NetはStreamReaderクラスをカプセル化してくれました.
StreamReaderクラスを初期化するには、さまざまな方法があります.
StreamReader sr1 = new StreamReader(@"c:\temp\utf-8.txt");//同じく符号化方式StreamReader sr 2=new StreamReader(@「c:temputf-8.txt」,Encoding.UTF 8);
FileStream fs = new FileStream(@"C:\temp\utf-8.txt", FileMode.Open, FileAccess.Read, FileShare.None); StreamReader sr3 = new StreamReader(fs); StreamReader sr4 = new StreamReader(fs, Encoding.UTF8); FileInfo myFile = new FileInfo(@"C:\temp\utf-8.txt");//OpenText UTF-8でエンコードされたStreamReaderオブジェクトStreamReader sr 5=myFileを作成します.OpenText();//OpenText UTF-8でエンコードされたStreamReaderオブジェクトStreamReader sr 6=Fileを作成します.OpenText(@"C:\temp\utf-8.txt");
初期化が完了すると、1行ずつ読んだり、1文字ずつ読んだり、数文字ずつ読んだり、すべての内容を一度に読んだりすることができます.
//string nextLine=sr.ReadLine()を1行読みます.//int nextChar=sr.Read();//100文字を読むint nChars=100; char[] charArray = new char[nChars]; int nCharsRead = sr.Read(charArray, 0, nChars);//string restOfStream=sr.ReadToEnd();
StreamReaderを使用した後、閉じることを忘れないでください.
sr.Closee();
1行1行の読み取りが必要な場合は、テキストファイル全体を読み終え、完全な例を見てみましょう.
StreamReader sr = File.OpenText(@"C:\temp\ascii.txt"); string nextLine; while ((nextLine = sr.ReadLine()) != null) { Console.WriteLine(nextLine); } sr.Close();
二、書類を書き取る
あまり書かないと、
Fileを使用できます.WriteAllTextメソッドは一度に内容をすべてファイルのように書きます.
文字列の内容をファイルに書き込む場合は、Fileを使用します.WriteAllText(FilePath)または指定符号化方式File.WriteAllText(FilePath,Encoding)メソッド.
string str1 = "Good Morning!";
File.WriteAllText(@"c:\temp\test\ascii.txt", str1);
//符号化方式の指定も可能
File.WriteAllText(@"c:\temp\test\ascii-2.txt", str1, Encoding.ASCII);
文字列配列がある場合は、各文字列要素をファイルに書き込むには、Fileを使用します.WriteAllLinesメソッド:
string[] strs = { "Good Morning!", "Good Afternoon!"};
File.WriteAllLines(@"c:\temp\ascii.txt", strs);
//符号化方式の指定も可能
File.WriteAllLines(@"c:\temp\ascii-2.txt", strs, Encoding.ASCII);
Fileを使用します.WriteAllTextまたはFile.WriteAllLinesメソッドの場合、指定したファイルパスが存在しない場合、新しいファイルが作成されます.ファイルが既に存在する場合は、元のファイルが上書きされます.
書き込む内容が多い場合は、
同様にストリーム(Stream)方式で書き込む.NetパッケージのクラスはStreamWriterです.
StreamWriterクラスを初期化するには、次のような方法があります.
//ファイルが存在しない場合は、ファイルを作成します.存在する場合、上書きファイルStreamWriter sw 1=new StreamWriter(@"c:temputf-8.txt");//符号化方式//trueはappend text、falseは元のファイルを上書きするStreamWriter sw 2=new StreamWriter(@「c:temputf-8.txt」,true,Encoding.UTF 8); //FileMode.CreateNew:ファイルが存在しない場合は、ファイルを作成します.ファイルが既に存在する場合は、例外FileStreamfs=new FileStream(@「C:temputf-8.txt」,FileMode.CreateNew,FileAccess.Write,FileShare.Read);//UTF-8はデフォルト符号化StreamWriter sw 3=new StreamWriter(fs); StreamWriter sw4 = new StreamWriter(fs, Encoding.UTF8);//ファイルが存在しない場合は、ファイルを作成します.存在する場合、ファイルFileInfo myFile=new FileInfo(@「C:temputf-8.txt」)を上書きします. StreamWriter sw5 = myFile.CreateText();
初期化が完了すると、StreamWriterオブジェクトで1行、1文字、1文字配列、さらには1文字配列の一部を一度に書き込むことができます.
//文字を書くsw.Write('a');//文字配列を書くchar[]charArray=new char[100]; //initialize these characters sw.Write(charArray);//文字配列の一部を書くsw.Write(charArray, 10, 15);
同様に、StreamWriterオブジェクトの使用が完了したら、閉じることを忘れないでください.
sw.Close();
最後に、StreamWriterを使用して一度に1行を書き込む完全な例を見てみましょう.
FileInfo myFile = new FileInfo(@"C:\temp\utf-8.txt"); StreamWriter sw = myFile.CreateText(); string[]strs={「おはよう」「こんにちは」}; foreach (var s in strs) { sw.WriteLine(s); } sw.Close();
ファイルの読み書きその他の操作
1,ReadAllBytes()関数は,ファイル内の文字内容をbyte配列に変換して返す.
ケース)ファイルを読み込み、コンソールに出力する
string Strpath = @"C:\Users\Administrator\Desktop\ \ .txt"; //
byte[] buffer = File.ReadAllBytes(Strpath); // byte
string StrContent = Encoding.Default.GetString(buffer); // string
Console.WriteLine(StrContent);
Console.ReadKey();
2,ReadAllLines()メソッドは、テキストファイルを行で読み込み、文字列配列を返します.
string Strpath = @"C:\Users\Administrator\Desktop\ \ .txt"; //
string[] Str = File.ReadAllLines(Strpath,Encoding.Default); // ReadAllLines ,
foreach (string item in Str) //
{
Console.WriteLine(item);
}
3,ReadAllText()メソッド,テキストを読み出し,文字列を返す
string Str=File.ReadAllText(Strpath,Encoding.Default);
4,WriteAllBytes()メソッド、ファイルをバイナリで書き込む
string Strpath = @"C:\Users\Administrator\Desktop\ \ .txt"; //
string StrWrite = " , XXXX"; //
byte[] buffer = Encoding.Default.GetBytes(StrWrite); //
File.WriteAllBytes(Strpath,buffer); //
Console.WriteLine(" !"); //
Console.ReadKey();
5,WiteAllLines()メソッド,行でファイルを書き込む
string Strpath = @"C:\Users\Administrator\Desktop\ \ .txt"; //
string[] Str={" , "};
File.WriteAllLines(Strpath,Str);
Console.WriteLine(" !"); //
Console.ReadKey();
6,WriteAllText()メソッド、文字列でファイルを書き込む
string Strpath = @"C:\Users\Administrator\Desktop\ \ .txt"; //
string Str = " , C#";
File.WriteAllText(Strpath,Str);
Console.WriteLine(" !"); //
Console.ReadKey();
7,AppendAllText()メソッドは、追加でファイルに書き込まれ、既存のファイルの内容は上書きされません
string Strpath = @"C:\Users\Administrator\Desktop\ \ .txt"; //
File.AppendAllText(Strpath," C# 21 !",Encoding.Default);
Console.WriteLine(" !");
Console.ReadKey();
ファイル操作のFileMode
一.FileMode.Append
Append追加:
ファイルが存在する場合は、ファイルを開き、ファイルの末尾にポインタを指します.存在しない場合は、新しいファイルを作成します.
二.FileMode.Create
Create:新規作成
ファイルが存在する場合は、既存のファイルを上書きし、ポインタをファイルの開始に指し示し、ファイルの作成日が更新されます.
ファイルが存在しない場合は、新しいファイルを作成します.
三.FileMode.CreateNew
CreateNew:新規ファイル
ファイルが存在する場合、例外が発生します.ファイルが存在しない場合、例外が発生します.
四.FileMode.OpenOrCreate
OpenOrCreate:開くまたは新規
ファイルが存在する場合は、ファイルを開き、ファイルの開始にポインタを指します.ファイルが存在しない場合は、新しいファイルを作成します.
五.FileMode.Truncate
ファイルが存在する場合は、ファイルを開き、そのファイルの内容を消去し、ポインタをファイルの開始に指し、最初のファイルの作成日(書き換え)を保持します.ファイルが存在しない場合、例外が発生します.
六.FileMode.Open
Open:ファイルを開く