עבור לתוכן

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

Featured Replies

פורסם

יש לי קובץ 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 nothing 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);

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

ארכיון

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

דיונים חדשים