2010-01-19 36 views
5

Tôi xem xét việc viết một ứng dụng trong C# /. NET sẽ thay đổi chương trình một tệp XML trên máy tính của người dùng và tôi cố gắng xác định xem Silverlight (và phiên bản nào, ở chế độ nào) sẽ làm việc cho tác vụ này.Silverlight có thể thay đổi tệp trên máy tính của người dùng cục bộ không?

Dưới đây là quy trình làm việc:

  • tài chọn tập tin
  • ứng dụng sẽ thay đổi tập tin
  • Ứng dụng tiết kiệm tập tin, ghi đè lên tập tin gốc

Đây có phải là có thể trong Silverlight? Nếu vậy, trong đó phiên bản và dưới những điều kiện nào?

+0

Tôi hy vọng Silverlight không thể can thiệp vào tệp của tôi. – zneak

+0

Tôi biết rằng Silverlight bị mù đối với tệp của bạn trừ khi bạn chọn một tệp cụ thể (mà tôi tin là phải thông qua hộp thoại). Những gì tôi tò mò về là, nếu người dùng chọn để cung cấp cho các ứng dụng SL cho phép (nếu điều này thậm chí có thể), có thể SL sau đó viết lại cho vị trí ban đầu thông qua một dòng IO. –

Trả lời

2

Một số câu trả lời ở đây tập trung vào Bộ nhớ riêng. Nếu không có ứng dụng nào khác cần truy cập dữ liệu này thì có lẽ Kho lưu trữ riêng biệt là câu trả lời cho bạn. Điều này link là một blog mô tả cách bạn lưu trữ cách ly được sử dụng trong một nutshell.

Tôi nghi ngờ điều này có thể không phải là những gì bạn muốn vì bạn có người dùng chọn tệp.

Chắc chắn trong SL3 bạn có thể cho người dùng chọn tệp và sau đó bạn có thể đọc tệp.

Tuy nhiên để lưu lại, bạn sẽ phải hiển thị hộp thoại "Lưu tệp" cho người dùng, để thu thập luồng tệp mà bạn có thể ghi.

Trong SL4 đang chạy OOB với mức độ riêng tư cao, bạn có thể lưu tệp như thế này trực tiếp trong thư mục người dùng, chẳng hạn như Tài liệu của tôi.

Sửa

Chỉ cần để được hoàn toàn rõ ràng, bạn không thể ghi vào một tập tin đó đã được mua lại bằng cách sử dụng OpenFileDialog chỉ đọc, bạn không thể đọc vào một tập tin đó như là mua sử dụng SaveFileDialog chỉ Viết.

+0

Cảm ơn câu trả lời chi tiết của bạn. Khi bạn nói 'Tuy nhiên để lưu lại, bạn sẽ phải hiển thị hộp thoại" Lưu tệp "cho người dùng, để thu thập luồng tệp bạn có thể ghi vào.', điều này có thể xảy ra với SL3 hay không yêu cầu SL4 ? –

+0

Có, trừ khi có đủ điều kiện khác tôi tham khảo phiên bản SL3 hiện tại. Bạn có thể hiển thị Hộp thoại Lưu từ một phiên bản SL3 trong trình duyệt, người dùng chọn tệp và như vậy đã cấp cho mã của bạn quyền ghi vào tệp đã chọn khi nó thấy phù hợp. OpenFileDialog cung cấp cho 'FileInfo' (s) mà bạn có thể' OpenRead' nhưng không phải 'OpenWrite' trong khi SaveFileDialog cung cấp cho' FileInfo' (s) mà bạn có thể 'OpenWrite' nhưng không thể' OpenRead'. – AnthonyWJones

+1

Ok. Tôi nghĩ nó có nghĩa. Vì vậy, nếu tôi muốn sửa đổi tệp của người dùng, tôi sẽ 1) yêu cầu người dùng cho tệp, 2) sửa đổi tệp trong mã, sau đó 3) yêu cầu người dùng lưu tệp. Nếu người dùng chọn ghi đè lên tệp gốc của họ, đó là lựa chọn của họ, nhưng người dùng vẫn phải nói nơi lưu tệp. –

1

SL3 cho phép truy cập đến một khu vực Isolated Storage, SL4 mở ra truy cập hơn nữa cho các ứng dụng đáng tin cậy cho phép họ truy cập vào các file trong MyDocs, MyPictures, vv

+0

bạn có thể mở rộng và giải thích cách hoạt động của nó? Cụ thể, tôi có thể hoàn thành quy trình làm việc của mình trong SL3 và trong điều kiện nào không? –

3

Thời gian chạy Silverlight hoạt động bên trong hộp cát 'bảo mật'.

Bạn chỉ có thể truy cập tệp từ ổ đĩa cứng của máy tính thông qua hộp thoại Mở tệp. Bạn có thể đọc và viết từ Isolated Storage sử dụng Silverlight 2 trở lên.

Coming trong Silverlight 4, bạn sẽ có khả năng truy cập tập tin từ "thư mục đặc biệt" như My Documents, My Music, My Pictures, vv (http://weblogs.asp.net/nmarun/archive/2009/11/27/local-file-access-silverlight-4.aspx)

+0

Liệu việc đọc và ghi có áp dụng các thay đổi đối với tệp gốc được truy cập thông qua hộp thoại Mở Tệp không? –

+0

Ngoài ra, phiên bản này áp dụng cho phiên bản nào? –

1

ứng dụng Silverlight có thể không thay đổi tập tin tùy ý trên người sử dụng của máy vi tính. Tuy nhiên, họ có thể để lưu trữ tập tin cục bộ sử dụng Isolated lưu trữ:

Trong .NET Framework, lưu trữ bị cô lập là một cơ chế lưu trữ cho phép các ứng dụng tin cậy một phần để lưu dữ liệu trên máy cục bộ mà không vi phạm bất kỳ chính sách bảo mật đặt trên máy tính. Kho lưu trữ riêng biệt nằm xung quanh kể từ phiên bản .NET Framework đầu tiên và đặc biệt hữu ích cho các thành phần được tải xuống một phần, thường không được cấp quyền truy cập vào các cơ chế I/O tiêu chuẩn. Tuy nhiên, những ứng dụng tương tự này thường được cấp quyền sử dụng bộ nhớ bị cô lập. Bằng cách này, các ứng dụng đến từ các nguồn có khả năng không đáng tin cậy vẫn có thể thực hiện một số đĩa I/O, mặc dù theo cách được kiểm soát.

Bạn có thể đọc thêm về điều này trong bài viết sau:

Silverlight and Local Storage

+0

Cảm ơn bạn đã liên kết "Silverlight và bộ nhớ cục bộ". Tuy nhiên, điều đó áp dụng cho Phiên bản 2.0 của Silverlight. Tôi tự hỏi nếu có thêm công việc đã được thực hiện kể từ đó. –

+0

Rõ ràng, Silverlight 4.0 sẽ giới thiệu một 'SaveFileDialog' (http://msdn.microsoft.com/en-us/library/system.windows.controls.savefiledialog%28VS.95%29.aspx). Tuy nhiên, điều này cho phép người dùng chỉ định tên tệp cục bộ, các ứng dụng không được phép tự chọn vị trí. –

1

Các hệ điều hành được xây dựng trong File Open/Save thoại cho phép Silverlight truy cập/sửa đổi bất kỳ tập tin mà người dùng chỉ định bằng cách trả về luồng tệp mà ứng dụng Silverlight có quyền truy cập.

Ngoài ra, ứng dụng Silverlight có quyền truy cập vào bộ nhớ riêng biệt.

+0

Phiên bản nào áp dụng? –

+0

Hộp thoại Tệp áp dụng cho phiên bản V2.0 trở lên. Tôi tin rằng Bộ nhớ cách ly áp dụng cho tất cả các phiên bản. – Aaron

Các vấn đề liên quan