C#の読み書きおよびファイル操作(File,FileMode)

7120 ワード

一、ファイルを読み取る
読み込むファイルの内容がそれほど多くない場合は、
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:ファイルを開く