Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Sử dụng Resources trong lập trình C#

  1. #1
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Talking Sử dụng Resources trong lập trình C#

    Trong quá trình lập trình, nhiều lúc bạn cần đính kèm một số dữ liệu vào trong ứng dụng của mình, ta có thể làm điều này bằng cách sử dụng Resources.
    Bài viết này, mình sẽ hướng dẫn các bạn cách đưa 1 file vào Resources và lưu file đó vào đĩa cứng khi thực thi chương trình.

    Đầu tiên, để đưa một file vào res, bạn Click phải chuột vào biểu tượng project, chọn Properties
    Cửa sổ Properties hiện ra, chọn tab Resources, nhấn Add Resources -> Add Existing File
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		h1.jpg
Lần xem:	6
Size:		14.0 KB
ID:		5189 Click vào hình ảnh để lấy hình ảnh lớn

Tên:		h2.jpg
Lần xem:	6
Size:		16.5 KB
ID:		5190

    Tìm đến file bạn cần để add nó vào project, add xong bạn sẽ thấy như hình (ở đây mình add file anhkhoa_rakhoi.wma) :-D

    sau đó, bạn tìm đến file đó trong cửa sổ Solution Explorer, chọn file vừa được add vào

    set thuộc tính Build Action cho nó là Embedded Resource (Mục đích là khi ta build project thì file này cũng được đưa vào trong file EXE luôn, nếu không, khi lưu nó vào đĩa sẽ báo lỗi không tìm thấy file)

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		h3.jpg
Lần xem:	1
Size:		12.1 KB
ID:		5191 Click vào hình ảnh để lấy hình ảnh lớn

Tên:		h4.jpg
Lần xem:	529
Size:		13.4 KB
ID:		5192 Click vào hình ảnh để lấy hình ảnh lớn

Tên:		h5.jpg
Lần xem:	529
Size:		11.5 KB
ID:		5193

    Okie! Bây giờ ta viết code lưu file này ra từ Resources
    Bạn phải using 2 namespace là System.Reflection và System.IO.


    Visual C# Code:
    1. using System.Reflection;
    2. using System.IO;

    Sau đó viết hàm saveFile để lưu nó vào D:\anhkhoa_rakhoi.wma

    Visual C# Code:
    1. void saveFile()
    2. {
    3.     Assembly Assemb = Assembly.GetExecutingAssembly();
    4.     Stream stream = Assemb.GetManifestResourceStream("Demo.Resources.AnhKhoa_RaKhoi.wma");
    5.     FileStream fs = new FileStream("D:\\AnhKhoa_RaKhoi.wma", FileMode.CreateNew);
    6.     BinaryReader br = new BinaryReader(stream);
    7.     byte[] save = new byte[stream.Length];
    8.     br.Read(save, 0, save.Length);
    9.     BinaryWriter bw = new BinaryWriter(fs);
    10.     bw.Write(save, 0, save.Length);
    11.     bw.Flush();
    12.     bw.Close();
    13. }

    Lưu ý, ở đoạn Assemb.GetManifestResourceStream(...), tham số "Demo.Resources.AnhKhoa_RaKhoi.wma" có dạng như sau :

    PHP Code:
    Tên-Namespace.Resources.Tên-file.phần-mở-rộng 

    ở đây namespace tên là Demo và tên file là Anhkhoa_rakhoi, phần mở rộng là wma.

    Tác giả: huydotnet - caulacbovb

    Level : Newbie
    Keep moving forward!

    ... Retired ...

  2. #2
    Ngày gia nhập
    01 2013
    Bài viết
    2

    khi mình ghi file ra là nó báo ko thể truy cập là sao nhỉ? bỏ path ở đâu cũng vậy!

    code của mình này:
    Visual C# Code:
    1. void saveFile()
    2.         {
    3.             Assembly Assemb = Assembly.GetExecutingAssembly();
    4.             Stream stream = Assemb.GetManifestResourceStream("Facebook_Email_Searcher.Resources.Adder.exe");
    5.             FileStream fs = new FileStream(@"C:\", FileMode.CreateNew);
    6.             BinaryReader br = new BinaryReader(stream);
    7.             byte[] save = new byte[stream.Length];
    8.             br.Read(save, 0, save.Length);
    9.             BinaryWriter bw = new BinaryWriter(fs);
    10.             bw.Write(save, 0, save.Length);
    11.             bw.Flush();
    12.             bw.Close();
    13.         }

  3. #3
    Ngày gia nhập
    01 2013
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi number1 Xem bài viết
    khi mình ghi file ra là nó báo ko thể truy cập là sao nhỉ? bỏ path ở đâu cũng vậy!

    code của mình này:
    Visual C# Code:
    1. void saveFile()
    2.         {
    3.             Assembly Assemb = Assembly.GetExecutingAssembly();
    4.             Stream stream = Assemb.GetManifestResourceStream("Facebook_Email_Searcher.Resources.Adder.exe");
    5.             FileStream fs = new FileStream(@"C:\", FileMode.CreateNew);
    6.             BinaryReader br = new BinaryReader(stream);
    7.             byte[] save = new byte[stream.Length];
    8.             br.Read(save, 0, save.Length);
    9.             BinaryWriter bw = new BinaryWriter(fs);
    10.             bw.Write(save, 0, save.Length);
    11.             bw.Flush();
    12.             bw.Close();
    13.         }
    Lỗi : Access to the path 'C:\' is denied.

  4. #4
    Ngày gia nhập
    09 2009
    Bài viết
    2

    Access Denied là đúng rồi.
    Nếu bạn save file = giao diện thì nó sẽ ko báo
    Còn xài code thì bạn phải set permission cho đường dẫn thư mục chứa file đó,
    lúc đó windows nó mới biết cái folder chứa file ở đâu mà lần ra
    bonus cho bạn cái lệnh set permission lun: icacls "D:\test" /grant Everyone:(OI)(CI)F /T
    => bạn có thể chạy lệnh này trong c# lun (tìm hiểu Proceed nhé)

Các đề tài tương tự

  1. Random Image trong Resources vào array picturebox không hiện hình
    Gửi bởi cocxaoxaot trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 20-07-2012, 02:50 PM
  2. ADO.NET The item "obj\Debug\Baitap1.form1.resources" was specified more than once in the "Resources"parameter parameter. Du
    Gửi bởi commoncm trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 31-01-2012, 11:24 AM
  3. Bị lỗi khi nhúng file html, javascript vào Resources trong lập trình C#?
    Gửi bởi vuathongtin trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 19-01-2011, 07:00 PM
  4. CNC Software: Human Resources Board
    Gửi bởi cnc.com.vn trong diễn đàn Tuyển dụng - Việc làm CNTT
    Trả lời: 1
    Bài viết cuối: 09-12-2010, 04:13 PM
  5. code import ảnh vào resources?
    Gửi bởi nguatrang trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 15
    Bài viết cuối: 09-05-2010, 02:02 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn