修改下载逻辑

This commit is contained in:
zsyg
2025-10-31 21:27:35 +08:00
committed by GitHub
parent a8069c60b9
commit d325676293

View File

@@ -25,10 +25,34 @@ namespace MCSJ.Tools
return; return;
} }
// 根目录 profiles 文件夹
var profilesRoot = Path.Combine(Directory.GetCurrentDirectory(), "profiles");
if (!Directory.Exists(profilesRoot))
Directory.CreateDirectory(profilesRoot);
string targetFolder = null;
string profilePath = null;
while (true)
{
Console.Write($"请输入存放文件夹名称(直接回车默认用版本名 '{version}'");
var input = Console.ReadLine();
targetFolder = string.IsNullOrWhiteSpace(input) ? version : input;
profilePath = Path.Combine(profilesRoot, targetFolder);
if (!Directory.Exists(profilePath))
break;
Console.WriteLine($"文件夹 '{targetFolder}' 已存在,请重新输入(直接回车则取消下载):");
}
if (Directory.Exists(profilePath))
{
Console.WriteLine("下载已取消。");
return;
}
Directory.CreateDirectory(profilePath);
string jarPath = Path.Combine(profilePath, "server.jar");
try try
{ {
Console.WriteLine($"开始下载 {version}..."); Console.WriteLine($"开始下载 {version} 到 {profilePath} ...");
var response = await _httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead); var response = await _httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
@@ -38,7 +62,7 @@ namespace MCSJ.Tools
var isMoreToRead = true; var isMoreToRead = true;
using (var stream = await response.Content.ReadAsStreamAsync()) using (var stream = await response.Content.ReadAsStreamAsync())
using (var fileStream = new FileStream($"{version}.jar", FileMode.Create, FileAccess.Write)) using (var fileStream = new FileStream(jarPath, FileMode.Create, FileAccess.Write))
{ {
while (isMoreToRead) while (isMoreToRead)
{ {
@@ -50,7 +74,6 @@ namespace MCSJ.Tools
else else
{ {
await fileStream.WriteAsync(buffer, 0, read); await fileStream.WriteAsync(buffer, 0, read);
downloadedBytes += read; downloadedBytes += read;
if (totalBytes > 0) if (totalBytes > 0)
{ {
@@ -60,8 +83,7 @@ namespace MCSJ.Tools
} }
} }
} }
Console.WriteLine($"\n{version} 下载完成! 文件已保存到 {jarPath}");
Console.WriteLine($"\n{version} 下载完成!");
} }
catch (Exception ex) catch (Exception ex)
{ {