C#教科書を身につける.ストリームとファイルの入力
6282 ワード
https://www.youtube.com/watch?v=rrHDuomZm3M&list=PLO56HZSjrPTB4NxAsEP8HRk6YKBDLbp7m&index=81
1.ストリームとファイル入力
ファイル、ネットワーク、データベース等にデータを移動するためのメカニズム .読み書き可能
ファイル処理クラス File, Directory StermReader, StremWriter FileStrem BinaryReader, BinaryWriter ... Strem FileStrem MemoryStrem NetworkStrem ファイル処理 ファイルクラス File.WriteAllText() File.ReadAllText() 等 FileInfoクラス FileStremクラス 処理ディレクトリ ディレクトリクラス DirectoryInfoクラス File.Exists File.Create File.Copy File.Move File.Delete Directory.Exists Directory.CreateDirectory Directory.Delete Directory.GetCurrentDirectory Directory.GetFiles Directory.GetDirectories Directory.Move パス関連コマンドの提供 Path.DirectorySeparatorChar 、など、現在の環境に適しています
XML/XSLT豊富クラス System.Data.SqlClient SQL Serverの主要カテゴリ System.Data データベース処理クラスとネーミングスペース 45で作成されたTodoApp Cloneを使用
UI/CShopTodoApp.ConsoleAppFile hugithubに格納されているかどうか
1.ストリームとファイル入力
01.ストリーム(Stream)
02. System.IO Namespace
03. Sytem.IO.Stem抽象クラス
04.ファイル/ディレクトリクラス
05.ファイル処理命令
06.ディレクトリ処理命令
07. System.IO.Pathクラス
08. System.Xml Namespace
09. System.Data Namespce
2.プロジェクト
01.ファイルの名前を変更し、Repositoryインプリメンテーションファイルをファイルにコピーする
02.ディレクトリにファイルを作成し、内容を入力する
03.ファイルパスの確認
04.03 02 ToDoRepositoryFile実装
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace CShopTodoApp.Models
{
public class TodoRepositoryFile : ITodoRepository
{
// 파일 경로
private readonly string _filePath = "";
// 인-메모리 역할을 해줄 컬렉션 생성
private static List<Todo> _todos = new List<Todo>();
public TodoRepositoryFile(string filePath = @"C:\Temp\Todos.txt")
{
_filePath = filePath;
string[] todos = File.ReadAllLines(_filePath, Encoding.Default);
foreach (var item in todos)
{
string[] line = item.Split(',');
_todos.Add(new Todo { Id = Convert.ToInt32(line[0]), Title = line[1], IsDone = Convert.ToBoolean(line[2]) });
}
}
// 인-메모리 데이터베이스 사용 영역
public void Add(Todo model)
{
model.Id = _todos.Max(t => t.Id) + 1;
_todos.Add(model);
// 파일 저장
string data = "";
foreach(var t in _todos)
{
// \r\n == Environment.NewLine
data += $"{t.Id},{t.Title},{t.IsDone}{Environment.NewLine}";
}
try
{
using (StreamWriter sw = new StreamWriter(_filePath))
{
sw.Write(data);
sw.Close(); // 파일 닫고
// sw.Dispose(); // 메모리 제거
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
public List<Todo> GetAll()
{
return _todos.ToList();
}
}
}
05.実行項目の作成
using CShopTodoApp.Models;
using System;
using System.Collections.Generic;
namespace CShopTodoApp.ConsoleAppFile
{
class Program
{
static void Main(string[] args)
{
ITodoRepository _repository = new TodoRepositoryFile(@"C:\Temp\Todos.txt");
List<Todo> todos = new List<Todo>();
todos = _repository.GetAll();
// [1] 기본 데이터 출력
foreach (var t in todos)
{
Console.WriteLine($"{t.Id} - {t.Title} ({t.IsDone})");
}
// [2] 데이터 입력
Todo todo = new Todo { Title = "Database", IsDone = true };
_repository.Add(todo);
todos = _repository.GetAll();
// [3] 변경 데이터 출력
foreach (var t in todos)
{
Console.WriteLine($"{t.Id} - {t.Title} ({t.IsDone})");
}
}
}
}
Reference
この問題について(C#教科書を身につける.ストリームとファイルの入力), 我々は、より多くの情報をここで見つけました https://velog.io/@ansalstmd/C교과서-마스터하기-46.-스트림과-파일-입출テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol