שאלה בבקשה C# csv מחיקת שורה לתאריך שעבר - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלה בבקשה C# csv מחיקת שורה לתאריך שעבר


Nittai

Recommended Posts

יש לי קובץ CSV בפורמט נתון שאין לי אפשרות לשנות את הטבלאות, כאשר התאריך מחולק ל 3 

כיצד אני מוחק אוטומטית שורה מהקובץ כאשר התאריך כבר עבר (מצורפת דוגמה מהקובץת והקוד שניסיתי לכתוב ונתקעתי בנקודה שבה עלי למחוק את הורה עם התאריך שעבר)

תודה מראש לעונים

 קובץ CSV

(Filename),(Year),(Month),(Day)
lemon.txt,2014,1,30
Apple.txt,2014,1,30
orange.txt,2014,1,30

 

 

 using (StreamReader sr = new StreamReader("1.csv"))
            {
                string headerLine = sr.ReadLine();
                String line;
                while (sr.Peek() != -1) // Just read the first line and do with it... 

                while ((line = sr.ReadLine()) != null)
                {
                    string[] parts = line.Split(',');

                    string day = parts[3];
                    string month = parts[2];
                    string year = parts[1];
                    string OldDate = (day + "/" + month + "/" + year);

                    DateTime dt1 = DateTime.Parse(OldDate);
                    DateTime dt2 = DateTime.Now;

                    if (dt1.Date >= dt2.Date)
                    {
                        MessageBox.Show(dt1 + " still relevant ");                       
                    }
                    else
                    {
                         // ... מכאן אבקש עזרה כיצד למחוק את השורה  - ואולי כל התהליך שעשיתי אינו נכון 
                        MessageBox.Show(dt1 + " The date has passed can be deleted ");                     
                    }

                }


 

 

 

קישור לתוכן
שתף באתרים אחרים

StreamReader יכול רק לקרוא נתונים מהקובץ, בשביל לכתוב ולעשות שינויים בקובץ אתה צריך StreamWriter.

לקרוא את הקובץ ובו זמנית לעשות בו שינויים זה אפשרי אבל די מסובך, הדרך הפשוטה יותר היא לקרוא את הקובץ ולייצר קובץ חדש עם השינויים הנדרשים. אם צריך אפשר אח"כ להחליף את הקובץ המקורי בקובץ החדש.

קישור לתוכן
שתף באתרים אחרים

etal

תודה על התגובה אבל עדיין נשארתי עם אותו הכאב ראש שאין לי מושג איך לבצע...:) 

 איך אני לאחר ה - ELSE ( כלומר לאחר הבדיקה כי התאריך עבר)

מייצר את הקובץ החדש  רק עם הנתונים הרלבנטים (כלומר עם התאריכים שעדיין לא עברו)  בנקודה הזאת אכן נתקעתי

קישור לתוכן
שתף באתרים אחרים

אני לא אכתוב את הקוד (ולא נגעתי ב-c# כבר הרבה זמן) אבל העקרון הוא לפרק את זה לבעיות יותר קטנות. תתחיל מלכתוב מערכת פשוטה שמעתיקה את הכל לקובץ החדש:

- תפתח בהתחלה גם reader על הקובץ הקיים ו-גם writer לקובץ החדש

- כמו שעשית תעבור ב-reader על הקובץ שורה שורה, כשכל שורה שאתה קורא תעביר ל-writer שיכתוב

- תסגור בסוף את ה-reader וה-writer

 

אחרי שכל זה עובד והקובץ מועתק נכון תוסיף את הלוגיקה שמחליטה איזה שורות להעביר ל-writer ואיזה לא.

קישור לתוכן
שתף באתרים אחרים

חבל להשתמש ב stream writer או reader

 

יותר פשוט ככה:

 

            string path = @"c:/";
            string newPath = @"c:/";
            List<string> file = File.ReadAllLines(path).ToList();
            //do what ever you want to the list "file"
            File.WriteAllLines(newPath, file);

וכמובן אתה יכול לייצר רשימה של סטרינגים חדשה ולהכניס לה מה שאתה רוצה שיהיה כתוב בקובץ החדש.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...