如何管理 MTP 便携式设备上的文件?
Posted
技术标签:
【中文标题】如何管理 MTP 便携式设备上的文件?【英文标题】:How to manage files on an MTP Portable Device? 【发布时间】:2013-09-01 23:49:27 【问题描述】:我已经研究这个话题好几天了,但我找不到任何关于在 MTP 便携式设备(更具体地说是 Galaxy S4)上管理文件的信息。
我希望能够...
将文件从 PC 复制到 MTP 设备 将文件从 MTP 设备复制到 PC 从 MTP 设备中删除文件我真的很想复制 MP3 文件,但如果有一种通用的复制方式和 MTP 支持的文件,那就太棒了。我查看了 Window Portable Device API,但找不到任何有 C# 示例代码的地方。
任何博客、示例代码和文件都会非常有帮助。谢谢! :)
【问题讨论】:
嗨,Chrish,您对此有什么解决方案吗? 不,我没有,我正在研究 Windows SDK,但我不明白如何在我的项目中实现它。 【参考方案1】:我使用了一个名为MediaDevices的nugetpackage
这让我很容易将我的照片从我的安卓手机复制到我的电脑上。
public class Program
static void Main(string[] args)
var devices = MediaDevice.GetDevices();
using (var device = devices.First(d => d.FriendlyName == "Galaxy Note8"))
device.Connect();
var photoDir = device.GetDirectoryInfo(@"\Phone\DCIM\Camera");
var files = photoDir.EnumerateFiles("*.*", SearchOption.AllDirectories);
foreach (var file in files)
MemoryStream memoryStream = new System.IO.MemoryStream();
device.DownloadFile(file.FullName, memoryStream);
memoryStream.Position = 0;
WriteSreamToDisk($@"D:\PHOTOS\file.Name", memoryStream);
device.Disconnect();
static void WriteSreamToDisk(string filePath, MemoryStream memoryStream)
using (FileStream file = new FileStream(filePath, FileMode.Create, System.IO.FileAccess.Write))
byte[] bytes = new byte[memoryStream.Length];
memoryStream.Read(bytes, 0, (int)memoryStream.Length);
file.Write(bytes, 0, bytes.Length);
memoryStream.Close();
【讨论】:
【参考方案2】:还有一个名为 WPDApi 的 nuget 包,在我设法下载源代码后(在 nuget 上有问题),它对我很有效:
https://github.com/Duke-fleed/WPDApi
【讨论】:
以上是关于如何管理 MTP 便携式设备上的文件?的主要内容,如果未能解决你的问题,请参考以下文章
关于Android手机MTP模式连接的一些设置(win7和ubuntu下,以红米1s为例)