-
최신 파일 하나만 다운로드 해줘프로그램(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. 위의 코드 변경 사항을 사용하면 지정된 폴더의 마지막 파일만 다운로드하고 파일 이름을 반환하여 최신 파일만 다운로드할 수 있습니다.
'프로그램(C# etc.)' 카테고리의 다른 글
ftp 주소의 jpg 파일 삭제 코드 (0) 2023.01.12 가상머진에서 AutoItX.ControlSetText가 동작하지 않는다 (0) 2023.01.12 ArrayList를 string[] 넣어줘 (0) 2023.01.12 private void button1_Click(object sender, EventArgs e) button1_Click 함수 호출하는 법 (0) 2023.01.12 richTextBox1.InvokeRequired가 왜 계속 false 상태야? (0) 2023.01.11