프로그램(C# etc.)

최신 파일 하나만 다운로드 해줘

질문폭격 2023. 1. 12. 10:45

Q1. 다음 코드 참조해서 최신 파일 하나만 다운로드 해줘

       public static ArrayList DownloadLast(string strPathDownload)
        {
            ArrayList aFileNames = GetDirNFileList(strPathDownload);

            if (null == aFileNames)
                return null;

            for (int i = 0; i < aFileNames.Count; ++i)
            {
                string strFileName = aFileNames[i].ToString();

                FtpWebResponse resp = GetRequest(strPathDownload + "/" + strFileName, WebRequestMethods.Ftp.DownloadFile, true);

                if (null == resp)
                {
                    Global.LOG("Download, resp is null!");
                }
                else
                {
                    Stream stream = resp.GetResponseStream();

                    Global.CreateDirectory(Global.strUpdataLocalPath);

                    Global.LOG("Download, " + Global.strUpdataLocalPath + "\\" + strFileName);

                    using (Stream fileStream = File.Create(Global.strUpdataLocalPath + "\\" + strFileName))
                    {
                        stream.CopyTo(fileStream);
                    }
                }
            }

            return aFileNames;
        }

 

A.

다음과 같이 변경하여 Download Last 기능을 수정하여 마지막 파일만 다운로드할 수 있습니다:

1. GetDirNfileList 함수에서 디렉터리를 사용할 수 있습니다.GetFiles(strPathDownload) - 디렉터리에 있는 모든 파일을 가져오고 Array를 사용하여 정렬합니다.마지막으로 수정한 날짜를 기준으로 정렬합니다.

    string[] files = Directory.GetFiles(strPathDownload);
    Array.Sort(files, new FileLastWriteTimeComparer());

2. 그런 다음 파일을 반복하여 배열의 마지막 요소를 가져와 해당 요소만 다운로드하고 루프를 해제하고 반환할 수 있습니다.

    string strFileName = files[files.Length - 1];
    FtpWebResponse resp = GetRequest(strPathDownload + "/" + strFileName, WebRequestMethods.Ftp.DownloadFile, true);
    // rest of the code remains same

3. 파일의 마지막 쓰기 시간을 비교하는 FileLastWriteTimeComparer 클래스도 추가되었습니다.

public class FileLastWriteTimeComparer : IComparer
{
    public int Compare(Object x, Object y)
    {
        FileInfo file1 = new FileInfo(x.ToString());
        FileInfo file2 = new FileInfo(y.ToString());
        return DateTime.Compare(file1.LastWriteTime, file2.LastWriteTime);
    }
}

4. 위의 코드 변경 사항을 사용하면 지정된 폴더의 마지막 파일만 다운로드하고 파일 이름을 반환하여 최신 파일만 다운로드할 수 있습니다.