C# 나를 배려했던 5가지 방법

초보자를 위한 성능총 무시 방법


초보자라도 코드를 쉽게 이해할 수 있는데, 방법의 단위가 확실히 작기 때문에 올해 관심을 받은 방법들.
그러나 처리 속도는 한 번도 고려한 적이 없고 기능만 실현했으면 좋겠다는 간단한 응용 방법이다.

응용 프로그램에서 흔히 볼 수 있는 5가지 방법

  • 파일의 존재 판정
  • 폴더가 없으면 생성
  • CSV 파일 읽기
  • 문자 코드 변환
  • 모든 폴더에서 파일 삭제
  • 상술한 방법은log4net의 전제 오류를 사용할 때의 처리, 로그 출력입니다.

    파일 존재 확인


    파일을 처리하는 프로그램을 만들 때 반드시 사용해야 한다.
    대상 서류가 없으면 원래 처리가 잘 안 되기 때문에 오류를 알리지 않으면 괜히 고민하게 된다.
    처리 대상 파일이 있어야 하는 프로그램을 만들 때도 조심스럽게 넣는다.
    /// <summary>
    /// 指定したファイルが存在するか判定を行う</summary>
    /// <param name="fullFilePath">
    ///     検索するファイルのフルパス</param>
    /// <returns>
    ///     存在した場合:true、ない場合:false</returns>
    public static Boolean IsTargetFileExit(string @fullFilePath)
    {
        if (System.IO.File.Exists(fullFilePath)) return true;
        return false;
    }
    

    폴더가 없는 경우


    폴더의 제작은 물론이고 프로그램이 새로운 환경에서 실행될 때도 이 방법을 통해 필요한 작업 폴더를 자동으로 생성할 수 있어 폴더 등 잊어버리기 쉬운 오류가 없는 것을 방지할 수 있어 매우 편리하다.
    /// <summary>
    /// 指定したパスが存在しない場合、全てのディレクトリとサブディレクトリを作成</summary>
    /// <param name="fldPath">
    ///     作成するフォルダ</param>
    public static DirectoryInfo SafeCreateDirectory(string @fldPath)
    {
        try
        {
            if (Directory.Exists(fldPath)) return null;
            return Directory.CreateDirectory(fldPath);
        }
        catch (Exception ex)
        {
            logger.Error("ディレクトリの作成に失敗しました。");
            logger.Error(ex.Message + "\r\n" + ex.StackTrace);
            throw;
        }
    }
    

    CSV 파일 읽기


    이 방법은 언뜻 보면 이해하기 쉬운 것을 중시하기 때문에 사용하는 데이터형에 쓸모없는 메모리와 처리 속도가 느릴까 봐 걱정할 수밖에 없다.
    다만, CSV 파일을 읽어 내용 출력을 약간 변환하고 싶을 때 자주 사용할 수 있다.
    /// <summary>
    /// CSVファイルの全データ読み込み</summary>
    /// <param name="fullFilePath">
    ///     読み込むCSVのフルパス</param>
    /// <returns>
    ///     string[][]</returns>
    public static string[][] Loadcsv(string @fullFilePath)
    {
        List<string[]> list = new List<string[]>();
        TextFieldParser parser = new TextFieldParser(fullFilePath, Encoding.GetEncoding("SHIFT_JIS"));
        
        logger.Info("処理対象ファイル:" + fullFilePath);
    
        try
        {
            // カンマ区切りの指定
            parser.TextFieldType = FieldType.Delimited;
            parser.SetDelimiters(",");
            // フィールドが引用符で囲まれているか
            parser.HasFieldsEnclosedInQuotes = true;
    
            while (!parser.EndOfData)
            {
                // 1行読み込み
                string[] column = parser.ReadFields();
                list.Add(column);
            }
            return list.ToArray();
        }
        catch (Exception ex)
        {
            logger.Error("CSVファイルの読み込みに失敗しました。");
            logger.Error(ex.Message+"\r\n"+ ex.StackTrace);
            throw;
        }
        finally
        {
            parser.Close();
        }
    }
    

    문자 코드 변환


    주로 SJIS에서 UTF-8로 변환하려는 경우에 사용됩니다.
    사용하지 않는 것 같은데 의외로 사용하고 있어요.
    /// <summary>
    /// 文字コード変換(SJIS→"destEnc"で指定した文字コード)</summary>
    /// <param name="src">
    ///     変換したい文字列(SJIS)</param>
    /// <param name="destEnc">
    ///     変換後の文字コード</param>
    public static string ConvertEncoding(string src, Encoding destEnc)
    {
        byte[] src_temp = Encoding.GetEncoding("SHIFT_JIS").GetBytes(src);
        byte[] dest_temp = Encoding.Convert(Encoding.GetEncoding("SHIFT_JIS"), destEnc, src_temp);
        string ret = destEnc.GetString(dest_temp);
        return ret;
    }
    

    폴더의 모든 파일 삭제


    처리된 원자재 파일이 필요 없을 때 등 작업 폴더 안의 파일을 지울 때 사용한다.
    백업이 안 됐다는 우려도 있었지만 자신도 잘 보지 못했고 삭제 작업도 번거로워 기본적으로 원본을 삭제했다.
    /// <summary>
    /// 指定したフォルダ内のファイルをすべて削除</summary>
    /// <param name="fldPath">
    ///     削除するフォルダパス</param>
    public static void DelFiles(string fldPath)
    {
        DirectoryInfo di = new DirectoryInfo(fldPath);
        foreach (FileInfo file in di.GetFiles())
        {
            file.Delete();
        }
    }
    
    이상은 개인이 자주 사용하는 5가지 방법이다.

    최후


    처음에도 썼지만 초보자를 대상으로 하고 코드의 이해성을 중시하기 때문에 기술적인 일은 따뜻한 눈으로 보세요.

    좋은 웹페이지 즐겨찾기