כיצד לאחסן קבצים הנלווים לתכנה?
-
אני כותב אפליקציה באמצעות WPF, שאמורה להציג תוכן של קבצי וורד וכדו'.
כאשר האפליקציה מתחילה לרוץ היא צריכה לטעון את התוכן של הקבצים ולאחסן אותו במשתנים, כדי שיהיה אפשר להציג אותם למשתמש.
ניסיתי ליצור תיקיה APPDATA ולאחסן בה את הקבצים, אולם אני רואה שכאשר אני מבפלש את התכנה, הוא לא כולל את התיקיות והקבצים הנ"ל.
חיפשתי וחיפשתי.. ומה שהצלחתי להבין זה שאני צריך להגדיר את הקבצים הללו במאפיינים של התכנית, תחת הכרטיסיה - Resources, לא כן?
ראיתי שיש שם אפשרות להגדיר סטרינגים, תמונות, קבצים, קבצי טקסט וכדו'.
אולם לא בדיוק הבנתי כיצד אני משתמש בזה, וכיצד אני קורא לזה אח"כ מתוך הקוד.
אשמח אם מישו יוכל להבהיר לי קצת יותר את הנושא.
תודה רבה!פורסם במקור בפורום CODE613 ב13/04/2016 17:26 (+03:00)
-
כתבתי כך וזה אכן עובד:
var test = MyApp.Resources.ResourceManager.GetString("BookComplete");
ובמידה וזהו קובץ בינארי - צריך להשתמש ב - GetObject().
אולם, מה אעשה והמדובר הוא בקובץ וורד שכידוע הוא בעצם קובץ זיפ של כמה קבצי XML, ואני רוצה לקבל חזרה את קובץ הזיפ ולא לקבל אותו בצורה בינארית, או כסטרינג??
תודה רבה!פורסם במקור בפורום CODE613 ב13/04/2016 18:14 (+03:00)
-
קבצים סטטייים או דינמיים?
ריסורס זה רק לקבצים סטטיים. אתה יכול לשים את הקבצים איפה שאתה רוצה רק תבחר בaction build באפשרות resource. יותר נוח זה לשים במאפייני פרוייקט כמו שכתבת, ולהוסיף add exsiting file.
אתה ניגש לקבצים הללו ככה:byte[] file = youDefaultNamespace.Properties.Resources.nameOfResource;
זה סה"כ עוטף את הריסורס בצורה קצת יותר מסודרת - הוא יוצר קוד זהה למה שעשית (זה יושב בפרוייקט בקובץ בשם Resources.Designer.cs):
internal static byte[] nameOfResource { get { object obj = ResourceManager.GetObject("nameOfResource", resourceCulture); return ((byte[])(obj)); } }
במקרה של zip זה מחזיר יופי של מערך בינארי שמייצג את הzip. כמעט כל מחלק שעובדת עם קבצים מקבלת גם סטרים, אז עם MemoryStream אתה יכול להעיבר את זה כפרמטר לכל פעולה כמו עיבוד docx.
אם זה דינמי אז אתה לא צריך ליצור שום תיקיה. אתה פשוט מחליט איפה לשמור (זה יכול להיות בתיקיית ההרצה או בתיקיה אישית של המשתמש) ואתה כמובן בודק אם התיקיה קיימת ואף יוצר אותה לפי הצורך.
פורסם במקור בפורום CODE613 ב13/04/2016 19:06 (+03:00)
-
@דוד ל.ט.
קבצים סטטייים או דינמיים?
ריסורס זה רק לקבצים סטטיים. אתה יכול לשים את הקבצים איפה שאתה רוצה רק תבחר בaction build באפשרות resource. יותר נוח זה לשים במאפייני פרוייקט כמו שכתבת, ולהוסיף add exsiting file.
...
אם זה דינמי אז אתה לא צריך ליצור שום תיקיה. אתה פשוט מחליט איפה לשמור (זה יכול להיות בתיקיית ההרצה או בתיקיה אישית של המשתמש) ואתה כמובן בודק אם התיקיה קיימת ואף יוצר אותה לפי הצורך.זה קבצים סטטיים, בהם מאוחסן התוכן שהאפליקציה צריכה להציג (אפליקציה להצגת ספרים).
תודה רבה אנסה זאת ואעדכן!
פורסם במקור בפורום CODE613 ב13/04/2016 19:29 (+03:00)
-
@םןץףך
לא נראה לי כדאי לעבוד ככה. זה מיותר לחלץ כל פעם את הקובץ מהריסורס. (אם זה כמה בודדים מילא. אבל מה אם זה עשרות ומאות?)
אולי תעשה שרק אם הקובץ לא נמצא הוא מחלץ אותו.מדובר בתכנה שאמורה להציג ספר לקריאה.
הקבצים עם התוכן של הספר לא נמצאים על המחשב של הלקוח כמובן.
לכן אני צריך שבהתקנה התוכנה תאחסן את הקבצים במקום מסוים, ואח"כ תדע לגשת אליו ולקרוא משם את התוכן של המסמך.
אבל אתה צודק שאין צורך לחלץ את זה כל פעם, מספיק בהתקנה לחלץ אותם ואח"כ לקרוא את הקובץ המחולץ כבר.פורסם במקור בפורום CODE613 ב14/04/2016 19:34 (+03:00)