2013-04-23 24 views
10

Tôi đang xây dựng ứng dụng tàu điện ngầm Windows 8 với XAML/C#. Tôi đang tiết kiệm nộp .xml cấu trúc dữ liệu của tôi với một dòng suối, như thế này:Làm cách nào để lấy tên của tệp được tạo bằng luồng trong C#?

XmlSerializer serializer = new XmlSerializer(typeof(MyObjectType)); 

using (var stream = await App.LocalStorage.OpenStreamForWriteAsync(MyObject.Title + ".xml", Windows.Storage.CreationCollisionOption.GenerateUniqueName)) 
    serializer.Serialize(stream, MyObject); 

đâu:

App.LocalStorage 

rõ ràng là một objecty StorageFolder thiết lập để

Windows.Storage.ApplicationData.Current.LocalFolder 

Các GenerateUniqueName tùy chọn được thiết lập để tránh va chạm, bởi vì các đối tượng của tôi có thể có cùng một tiêu đề. Bây giờ, tôi cần lấy tên tệp mà luồng của mình tạo ra, làm cách nào tôi có thể nhận được?

Cảm ơn bạn

+3

bạn đã thử gỡ lỗi và kiểm tra tất cả các thuộc tính của đối tượng luồng chưa? lớp bê tông và tất cả các trường có sẵn? Tôi tin rằng dòng cơ sở hoặc một cái gì đó như thế nên ở đó, có vấn đề tương tự trong quá khứ. –

+0

MyObject là gì và thuộc tính MyObject.Title được đặt như thế nào? – Abbas

Trả lời

10

Thử tạo tệp trước.

var sourceFileName = MyObject.Title + ".xml"; 
StorageFile storageFile = await App.LocalStorage.CreateFileAsync(sourceFileName, Windows.Storage.CreationCollisionOption.GenerateUniqueName); 

using (var stream = await storageFile.OpenAsync(FileAccessMode.ReadWrite)) 
{ 
    serializer.Serialize(stream, MyObject); 
} 
2

Phương pháp OpenStreamForWriteAsync dường như không cung cấp cho bạn cách dễ dàng để truy cập thông tin này. Bạn có thể chuyển sang truy cập theo cách khác:

StorageFile file = await App.LocalStorage.CreateFileAsync(...); 
using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite)) 
    // do stuff, file name is at file.Name 
Các vấn đề liên quan