44
55using System ;
66using System . Collections . Generic ;
7+ using System . IO ;
78using System . Linq ;
89using System . Threading . Tasks ;
910using Microsoft . Toolkit . Helpers ;
@@ -282,27 +283,13 @@ public Task<bool> TryRenameItemAsync(string itemPath, string newName)
282283
283284 private async Task < T ? > ReadFileAsync < T > ( StorageFolder folder , string filePath , T ? @default = default )
284285 {
285- var dirName = System . IO . Path . GetDirectoryName ( filePath ) ;
286- if ( ! string . IsNullOrEmpty ( dirName ) )
287- {
288- folder = await folder . GetFolderAsync ( dirName ) ;
289- filePath = System . IO . Path . GetFileName ( filePath ) ;
290- }
291-
292- string value = await StorageFileHelper . ReadTextFromFileAsync ( folder , filePath ) ;
286+ string value = await StorageFileHelper . ReadTextFromFileAsync ( folder , NormalizePath ( filePath ) ) ;
293287 return ( value != null ) ? this . Serializer . Deserialize < T > ( value ) : @default ;
294288 }
295289
296290 private async Task < IEnumerable < ( DirectoryItemType , string ) > > ReadFolderAsync ( StorageFolder folder , string folderPath )
297291 {
298- var dirName = System . IO . Path . GetDirectoryName ( folderPath ) ;
299- if ( ! string . IsNullOrEmpty ( dirName ) )
300- {
301- folder = await folder . GetFolderAsync ( dirName ) ;
302- folderPath = System . IO . Path . GetFileName ( folderPath ) ;
303- }
304-
305- var targetFolder = await folder . GetFolderAsync ( folderPath ) ;
292+ var targetFolder = await folder . GetFolderAsync ( NormalizePath ( folderPath ) ) ;
306293 var items = await targetFolder . GetItemsAsync ( ) ;
307294
308295 return items . Select ( ( item ) =>
@@ -317,33 +304,19 @@ public Task<bool> TryRenameItemAsync(string itemPath, string newName)
317304
318305 private async Task < StorageFile > CreateFileAsync < T > ( StorageFolder folder , string filePath , T value )
319306 {
320- var dirName = System . IO . Path . GetDirectoryName ( filePath ) ;
321- if ( ! string . IsNullOrEmpty ( dirName ) )
322- {
323- folder = await folder . GetFolderAsync ( dirName ) ;
324- filePath = System . IO . Path . GetFileName ( filePath ) ;
325- }
326-
327- return await StorageFileHelper . WriteTextToFileAsync ( folder , this . Serializer . Serialize ( value ) ? . ToString ( ) , filePath , CreationCollisionOption . ReplaceExisting ) ;
307+ return await StorageFileHelper . WriteTextToFileAsync ( folder , this . Serializer . Serialize ( value ) ? . ToString ( ) , NormalizePath ( filePath ) , CreationCollisionOption . ReplaceExisting ) ;
328308 }
329309
330310 private async Task CreateFolderAsync ( StorageFolder folder , string folderPath )
331311 {
332- var dirName = System . IO . Path . GetDirectoryName ( folderPath ) ;
333- if ( ! string . IsNullOrEmpty ( dirName ) )
334- {
335- folder = await folder . GetFolderAsync ( dirName ) ;
336- folderPath = System . IO . Path . GetFileName ( folderPath ) ;
337- }
338-
339- await folder . CreateFolderAsync ( folderPath , CreationCollisionOption . OpenIfExists ) ;
312+ await folder . CreateFolderAsync ( NormalizePath ( folderPath ) , CreationCollisionOption . OpenIfExists ) ;
340313 }
341314
342315 private async Task < bool > TryDeleteItemAsync ( StorageFolder folder , string itemPath )
343316 {
344317 try
345318 {
346- var item = await folder . GetItemAsync ( itemPath ) ;
319+ var item = await folder . GetItemAsync ( NormalizePath ( itemPath ) ) ;
347320 await item . DeleteAsync ( ) ;
348321 return true ;
349322 }
@@ -357,7 +330,7 @@ private async Task<bool> TryRenameItemAsync(StorageFolder folder, string itemPat
357330 {
358331 try
359332 {
360- var item = await folder . GetItemAsync ( itemPath ) ;
333+ var item = await folder . GetItemAsync ( NormalizePath ( itemPath ) ) ;
361334 await item . RenameAsync ( newName , NameCollisionOption . FailIfExists ) ;
362335 return true ;
363336 }
@@ -366,5 +339,10 @@ private async Task<bool> TryRenameItemAsync(StorageFolder folder, string itemPat
366339 return false ;
367340 }
368341 }
342+
343+ private string NormalizePath ( string path )
344+ {
345+ return Path . Combine ( Path . GetDirectoryName ( path ) , Path . GetFileName ( path ) ) ;
346+ }
369347 }
370348}
0 commit comments