我尝试将照片编辑器/查看器设为Windows 10 App。我让用户通过char dato = 0;
void setup() {
Serial.begin(9600);//9600 is the default baudrate of the HC-05 (you can change it by AT commands, google it if you want)
//pinMode(13, OUTPUT); //enable this pin if you want to use de LED idea
//digitalWrite(13, HIGH);
}
//////////////////////////////////////////////////////////////////////////
void serialEvent() { //if you have received serial data
while (Serial.available() > 0) {
char dato = (byte)Serial.read();//save the byte
Serial.write(dato);//send the just received byte (echo)
}
}
///////////////////////////////////////////////////////////////////////////
void loop() {
}
打开图像文件。该程序还应该能够从与所选文件相同的文件夹中浏览其他图像(例如,通过上一个和下一个按钮),但是存在问题。我甚至无法获得这些图像的文件名。
我尝试过的所有方法都只返回FileOpenPicker
...
null
那么,如何浏览与已打开文件相同的文件夹中的其他文件?
我发现我可以使用// File picker to let user select the image file - works OK
var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.FileTypeFilter.Add(".jpg");
var file = await picker.PickSingleFileAsync();
// These methods to get neighboring files do not work
// 1. using Directory.GetFiles - it returns empty string
string filePaths[] = Directory.GetFiles(Path.GetDirectoryName(file.Path));
// 2. using GetParentAsync - it returns null instead of file's parent folder
var folder = await file.GetParentAsync();
var files = await folder.GetFilesAsync();
来访问给定的文件夹,但如果用户需要通过两个选择器(一个用于图像文件,另一个用于实际文件),那将是一个非常愚蠢的解决方案文件夹)。
FolderPicker
开始适用于USB驱动器,但是当我从任何本地驱动器打开图像文件时,它仍然返回null。为什么它不适用于本地硬盘驱动器,这是大量照片的逻辑存储设备?仅将数据存储到小型SSD系统驱动器或USB驱动器上的用户文件夹是非常有限的。
答案 0 :(得分:1)
基本上,如果用户通过FilePicker选择“文件”,则您只拥有“文件”的权限。不适用于父文件夹。 (如果您具有图片库的访问权限,并且该文件位于库中,则可以访问该文件夹。但是,权限来自库访问,而不是来自文件。)
这是通过FileBroker设计的WinRT文件访问规则..这很难克服。
我的推荐(以及许多storeapp图片浏览器选择这种方式,包括我的应用程序PICT8)是,要求用户使用FolderPicker设置用户主要用于保存图像文件的文件夹。 您可以使用FAL或MRU保留文件夹的访问权限。您可以向用户显示文件列表,而不是使用FilePicker。
StorageApplicationPermissions class
而且......我对另一个主题的回答也可以帮助你:Access all files in folder from FileActivated file
答案 1 :(得分:0)
您从StorageFile
获得FileOpenPicker
。您可以使用GetParentAsync
方法获取包含文件夹,然后调用GetFilesAsync
以获取文件夹中的文件。
var folder = await file.GetParentAsync();
var files = await folder.GetFilesAsync();
var next = files.SkipWhile(x => x.Name == file.Name)
.Skip(1)
.First();
正如您所看到的,您可以获取文件夹中的下一个文件,跳过ech文件,直到找到您的当前文件。然后跳过它并在文件后取第一个。
我认为通过在OrderBy
结果上分别调用OrderByDescending
files
来优先订购文件会更好。
您可以传递lambda表达式来选择要排序的属性或值。