View Full Version : كسي ميتونه در مورد كار با فايل كمكم كنه راهنمايي ميخام
miki_ir
چهارشنبه 09 شهریور 1390, 21:09 عصر
سلام
توي سي وقتي ميخاستم مثلا اطلاعات دانش آموزو توي فايل ذخيره كنم يه استراكت تعريف مي كردم بعد استراكتو تو فايل ذخيره مي كردم وقته خوندنم به اندازه ي طول استراكت از فايل مي خوندم
حالا تو جاوا چطوري ميتونم اطلاعات يه شخص مثله نام و نام خانوادگيو ... كه فارسي هستن رو رو فايل بنويسم وبخونم
كسي مثالي داره بتونه يك رك.ورد اطلاعات يك شخصو كه فارسي هست از فايل بخونه و تو فايل بنويسه؟
پيشاپيش سپاسگذارم
omidbizdotcom
پنج شنبه 10 شهریور 1390, 09:38 صبح
می تونی از JAVA I/O استفاده کنی مثالاش اینجا ریخته
http://commons.apache.org/io/description.html
miki_ir
پنج شنبه 10 شهریور 1390, 13:05 عصر
سلام من از اين كلاس استفاده كردم
اما اين جوابم نيست . كلا ميخام هر بار كاربر دكمه اي رو كليك كرد يه شي كه چهار تا رشته توش تعريف شده رو فايل ذخيره بشه و بعد شي بعدي همينطور
نهايتا بتونم اين اشياو دونه دونه بخونم و باهاشون كار كنم يا رو فايل به روزرسانيشون كنم
دوسته من ممنون
كسي ميتونه در مورد خوندن چند شي و اينكه چطوري شي بعدي به اخر فايل اضافه بشه نه رو شي قبلي نوشته بشه كمك نميتونه بكنه؟
sina_oonline
پنج شنبه 10 شهریور 1390, 13:33 عصر
سلام یک شی رو می تونی با serialize کردن روی فایل ذخیره و بازیابی کنی باید از کلاس های ObjectInputStream و ObjectOutputStream استفاده کنی..تو گوگل در مورد serialize کردن در جاوا سرچ کن خیلی اسونه
miki_ir
پنج شنبه 10 شهریور 1390, 17:12 عصر
سلام یک شی رو می تونی با serialize کردن روی فایل ذخیره و بازیابی کنی باید از کلاس های ObjectInputStream و ObjectOutputStream استفاده کنی..تو گوگل در مورد serialize کردن در جاوا سرچ کن خیلی اسونه
باور كن اين كارو كردم و ديدم حالا نميدونم اربرد اين رابط سيريالايز چيه
اما مشكل من چيزه ديگس
هر چي مثال هست اومده يه جا شيو نوشته
من ميخام الان شيو بنويسم
بعد فرض كن فردا هم بخام بنويسم با اين روش آيا مياد از اول فايل مينويسه شي جديدو يا از آخر فايل اگه از اول بنويسه كه اطلاعات قبلي پاك ميشه
حالا فرض كن ده تا شي رو فايل دارم ميخام مقدار شي نهم رو بروز كنم فرض كن يه متغيير از شي نهم علي هست ميخام بكنمش رضا
اين دو موضوع مشكلاي منه
حل من ناصر؟
:لبخند:
miki_ir
جمعه 11 شهریور 1390, 08:24 صبح
كسي نيس؟ مارا ياري نمايد
miki_ir
شنبه 12 شهریور 1390, 14:40 عصر
كسي نيس؟ مارا ياري نمايد
كسي نيس ادوستانننننننننننن
mamrez_kh
شنبه 12 شهریور 1390, 15:27 عصر
فرض كن فردا هم بخام بنويسم با اين روش آيا مياد از اول فايل مينويسه شي جديدو يا از آخر فايل اگه از اول بنويسه كه اطلاعات قبلي پاك ميشه
هم میتونید کاری بکنید که فایل به کل پاک بشه و از سر نوشته بشه هم میتونید کاری بکنید که شی به آخر فایل اضافه بشه
فرض كن ده تا شي رو فايل دارم ميخام مقدار شي نهم رو بروز كنم فرض كن يه متغيير از شي نهم علي هست ميخام بكنمش رضا
تو این جور مواقع باید با استفاده از یه فایل کمکی اطلاعات فایل اصلی را به روز بکنید، برای مثال کلیه شی های فایل اصلی تا شی مورد نظر برای تغییر (هشت شی اول) رو داخل فایل کمکی بریزید، بعد شی به روز شده نهم، و بعد شی دهم از فایل اصلی رو داخل فایل کمکی بریزید و با یک عمل پاک کردن و کپی کردن فایل کمکی رو جایگزین فایل اصلی بکنید
sina_oonline
شنبه 12 شهریور 1390, 22:25 عصر
خب هر شی رو به صورت یه فایل به صورت OBJECTNAME.X ذخیره می کنین پس فکر کنید مثلا 2 تا شی STUDENT به نام ممد و علی دارین اون وقت دو تا فایل درست میشه MAMMAD.YOU و ALI.YOU خب حالا به کمک یه واسط مثل JFILECHOOSER یا به صورت دستی هر شی رو که میخواین فایلش رو لود می کنین و هر تغییر می خواین میدین مثلا شماره دانشجویی اون دانشجو رو عوض می کنین و دوباره همون شی رو ذخیره می کنین این میشه مفهوم سریالایز کردن..واقعا بهترین و تمیز ترین راه ممکن اینه
miki_ir
یک شنبه 13 شهریور 1390, 00:38 صبح
هم میتونید کاری بکنید که فایل به کل پاک بشه و از سر نوشته بشه هم میتونید کاری بکنید که شی به آخر فایل اضافه بشه
تو این جور مواقع باید با استفاده از یه فایل کمکی اطلاعات فایل اصلی را به روز بکنید، برای مثال کلیه شی های فایل اصلی تا شی مورد نظر برای تغییر (هشت شی اول) رو داخل فایل کمکی بریزید، بعد شی به روز شده نهم، و بعد شی دهم از فایل اصلی رو داخل فایل کمکی بریزید و با یک عمل پاک کردن و کپی کردن فایل کمکی رو جایگزین فایل اصلی بکنید
خدا خيرت بده خب گفتنش با لفظ آسونه اما تو عمل خيلي بدبختي داره چطوري شيو پيدا كنم اصلا از كجا بدونم شي چندمه بعدشم كلاس دسترسي تصادفي تو حالت شي كار نمي كنه فقط بايتيه
اي واي
راه اون دوستمونم كه نشده ببرم پيش استاد از كلاس بيرونم مي كنه براي هر نفر يه فايل درس بشه بي معناس واقعا
alirezaD1
یک شنبه 13 شهریور 1390, 02:41 صبح
دوست عزیز اگه اشتباه نکنم هدف شما درست کردن یک بانک اطلاعاتی هست. خوب اگه با بانک های اطلاعاتی معروف مثل mysql و ... نمی تونی کارت رو انجام بدی باید یک بانک اطلاعاتی خودت شبیه سازی کنی. برای این کار هم می تونی از الگوریتم های مربوط به طراحی بانک اطلاعاتی استفاده کنی ( توی گوگل سرچ کن)
ولی به نظر من از mysql استفاده کنید.
یه راه هم برای اینکه همه چیز رو سر هم بزنی و تحویل استادت بدی اینه :
یک کلاس مثلا با نام person درست کن به صورت زیر :
public class person implements Serializable{}
که توی این کلاس یه سری فیلد تعریف کن (مثلا فیلد نام و نام خانوادگی و ....) کلا هر کاری می خوای توی این کلاس انجام بده . فقط مواظب باش که تنها از کلاس های توی این کلاس استفاده کنی که رابط serializable رو پیاده سازی کرده باشند.
بعد یه فایل مشخص کن مثلا به نام persons.obj . که این فایل توی پوشه ی اصلی برنامه قرار داره . بعد اول اجرای برنامه این فایل رو بخون . به صورت زیر :
FileInputStream in=new FileInputStream(new File("persons.obj"));
ObjectInputStream input=new ObjectInputStream(in);
ArrayList persons=new ArrayList();
try{
while(true){
Object ob=input.readObject();
if(ob!=null){
persons.add(ob);
}
}
}catch(Exception e){}
الان یک لیست داریم که همه ی افراد داخش هستن.
هر کاری می خوای روی این اشیا انجام بده(مثلا یک فیلد رو تغییر بده یا یک نفر رو پاک کن و ....) بعد آخر کاری همه ی اشیای توی لیست رو دوباره سیو کن.
همونطور که گفتم این روش بهینه نیست (راستیتش حوصله ی گفتن روش های بهینه تر رو ندارم چون خیلی طولانی هستن. می تونی توی گوگل سرچ کنی) ولی خوب کارت رو راه می ندازه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.