我正在尝试创建SFTP C#应用程序。此应用程序会将文件从远程目录下载到本地服务器,在本例中为本地笔记本电脑。我设法使某些功能正常工作,但是由于我是C#新手,并且有几个月的经验,所以我仍然不了解很多事情。这是应用程序interface
基本上,该应用程序从JSON文件中读取数据,该文件具有连接到SFTP服务器的所有信息,这就是我读取和反序列化JSON文件的方式。
string text = File.ReadAllText(filePath);
var currentList = JsonConvert.DeserializeObject<List<Datalogger>>(text);
以下是我的JSON文件的示例:
[
{
"Record": 1,
"IPaddress": "192.168.6.247",
"Machinename": "taurus",
"username": "root",
"password": "root",
"sourcefolder": "/home/root/conf",
"destfolder": "C:/Users/Sami/Desktop/DB Files/",
"filextension": "db",
"removedownloaded": 0
},
{
"Record": 2,
"IPaddress": "192.168.2.255",
"Machinename": "taurus",
"username": "root",
"password": "root",
"sourcefolder": "/home/root/conf",
"destfolder": "C:/Users/Sami/Desktop/DB Files/",
"filextension": "json",
"removedownloaded": 1
},
{
"Record": 3,
"IPaddress": "192.168.4.255",
"Machinename": "taurus",
"username": "root",
"password": "root",
"sourcefolder": "/home/root/conf",
"destfolder": "C:/Users/Sami/Desktop/DB Files/",
"filextension": "db-journal",
"removedownloaded": 1
}
]
我在下面尝试了此实现,它可以完美地处理带有.JSON和.txt的文件,但是当我切换到带有.db文件的目录时,它似乎无法正常工作或无法下载(.db )。
这是我从JSON文件提取值的方法:
string host = currentList[0].IPaddress;
string username = currentList[0].username;
string password = currentList[0].password;
string remoteDirectory = currentList[0].sourcefolder;
string localDirectory = currentList[0].destfolder;
using (SftpClient sftp = new SftpClient(host, username, password))
{
try
{
sftp.Connect();
Console.WriteLine("Machine 1 - Connected");
var files = sftp.ListDirectory(remoteDirectory);
foreach (var file in files)
{
try
{
string remoteFileName = file.Name;
//if ((file.Name.EndsWith(".db")))
using (Stream file1 = File.OpenWrite(localDirectory + remoteFileName))
{
//if (!file.IsDirectory && !file.IsSymbolicLink)
sftp.DownloadFile(path: remoteDirectory + remoteFileName, output: file1);
}
sftp.Disconnect();
}
关于如何将.db文件下载到本地服务器的任何想法。