2009-04-09 6 views

Respuesta

8

No parece de todos modos en C# nativo para hacerlo (puede haber en Win32 nativo, pero no sé).

Lo que podría hacer es abrir el archivo existente y copiarlo en un archivo nuevo y eliminar el anterior. Sería lento en comparación con un movimiento, pero podría ser de una sola manera.

var oldName = "file.old"; var newName = "file.new"; 

using (var store = IsolatedStorageFile.GetUserStoreForApplication()) 
using (var readStream = new IsolatedStorageFileStream(oldName, FileMode.Open, store)) 
using (var writeStream = new IsolatedStorageFileStream(newName, FileMode.Create, store)) 
using (var reader = new StreamReader(readStream)) 
using (var writer = new StreamWriter(writeStream)) 
{ 
    writer.Write(reader.ReadToEnd()); 
} 
+0

supongo que sólo es lenta si el archivo es muy grande. Tal vez un par de MB debería ser irrelevante. Voy a probarlo. Gracias Samuel –

+0

¡Funciona muy bien! Sin gastos generales perceptibles. –

7

Además de la copia en un nuevo archivo, a continuación, elimine el método de archivo de edad, a partir de Silverlight 4 y .NET v4 marco, IsolatedStorageFile expone MoveFile y métodos MoveDirectory.

1

ejecutar perfectamente esta pieza de código

string oldName="oldName"; 
string newName="newName"; 
var file = await ApplicationData.Current.LocalFolder.GetFileAsync(oldName); 
await file.RenameAsync(newName); 
+0

Esta respuesta usa las nuevas API WinRT, y no IsolatedStorage, tal como lo solicita el OP –