نوشتن اطلاعات حافظه داخلی فایل ها اندروید استودیو FileOutputStream
آموزش کار با حاظه داخلی و نوشتن اطلاعات در فایل اندروید استودیو
حافظه داخلی فایل ها
بنام خدا عرض سلام و احترام خدمت کاربران گرامی خانه اندروید قصد داریم در این پست به شما عزیزان کار با فایل ها رو توی اندروید استودیو آموزش بدیم.اول اینکه خدمت شما عرض کنم که این آموزش رو از Linear Layout شروع می کنیم سپس دیزاین کلی برنامه رو درست می کنیم سپس می پردازیم به حافظه داخلی و فایل ها رو خدمتون آموزش میدیم.که چطور می توان در حافظه داخلی متن را ذخیره کرد و حتی با بسته شدن اپلیکیشن ما اطلاعات از بین نمی رود.
سوال حافظه داخلی فایل ها چیست ؟ حافظه خود دستگاه موبایل و یا هر نوع دیواسی رو حافظه داخلی می گویند.
فایل چیست ؟ همه ما روزانه با نوت پد ویندوز کارمی کنیم و در برخی موارد اطلاعاتی را نوشته و در جایی ذخیره می کنیم به این فایل نوت پد فایل گفته می شود.شما هم می توانید فایل را نوشته و ذخیره کنید در حافظه داخلی موبایل.
حافظه خارجی چیست ؟ معمولا حافظه خارجی را به اختصار رم یا sd card می شناسیم.
می خواهیم چی کار کنیم ؟ جواب : می خواهم اطلاعات را از کاربر دریافت کنیم و به روش فایل ذخیره کنیم.
ما اول Linear Layout رو خدمت شما عزیزان آموزش میدم که چطور میشه اصلا چند تا عنصر رو در کنار هم قرار بدیم و یا زیر هم قرار بدیم که معمولا برای زیر هم قرار دادن چند عنصر (دکمه و …) از اتربویت زیر استفاده می کنیم:
android:orientation="vertical">
و برای کنار هم قرار دادن از :
android:orientation="horizontal"
پیشنهاد ویژه :
فیلم آموزشی : عکس گرفتن انتخاب برای والپیپر wallpaper اندورید استودیو
فیلم آموزشی : آموزش استفاده از اسکرول ویو ScrollView اندروید استودیو
اما سورس کد بخش xml دیزاین :
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.app.homeandroidir.linerlayout.MainActivity" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="50dp" android:id="@+id/txtview"/> <EditText android:layout_width="match_parent" android:layout_height="50dp" android:id="@+id/edittext"/> <LinearLayout android:layout_width="match_parent" android:layout_height="80dp" android:orientation="horizontal" android:gravity="center"> <Button android:layout_width="150dp" android:layout_height="50dp" android:id="@+id/btnread" android:text="خواندن اطلاعات"/> <Button android:layout_width="150dp" android:layout_height="50dp" android:id="@+id/btnwire" android:text="نوشتن اطلاعات"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center" android:orientation="horizontal"> </LinearLayout> </LinearLayout>
سورس کد بالا تشکیل شده از یک Linear Layout که اتربیویت vertical براش ست شده است :
android:orientation="vertical">
و هم چنین برای خواندن اطلاعات از یک Textview استفاده شده است :
<TextView android:layout_width="match_parent" android:layout_height="50dp" android:id="@+id/txtview"/>
و برای گرفتن ورودی از کاربر و یا متن نوشته شده کاربر از یک Edittext استفاده کرده ایم :
<EditText android:layout_width="match_parent" android:layout_height="50dp" android:id="@+id/edittext"/>
و دو تا دکمه در کنار هم ؟ اما چطور کافی ما Linearlayout روی برای هر دو دکمه در نظر بگیرم و براشون مقدار horizontal زیر را ست کنیم.
android:orientation="horizontal"
و تصویر پس از نوشتن سورس کد xml :
دوستان نگران سورس کد زیر نباشید حتما الان با خودتون می گید اوه اوه چه خبره چطوری یاد بگیرم : فیلم آموزشی در نظر گرفتم براتون پس با خانه اندروید باشید.
و اما سورس کد جاوا برای ذخیره متن نوشته شده کاربر :
package com.app.homeandroidir.linerlayout; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class MainActivity extends AppCompatActivity { Button btnread,btnwirte; TextView textView; EditText editText; public static String filename="my"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cast(); btnwirte.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String msg=editText.getText().toString(); if ("".equals(msg)) { Toast.makeText(MainActivity.this, "لطفا اطلاعاتی جهت نوشتن وارد کنید.", Toast.LENGTH_SHORT).show(); } try { FileOutputStream Fops= openFileOutput(filename,MODE_PRIVATE); Fops.write(msg.getBytes()); Fops.close(); Toast.makeText(MainActivity.this, "اطلاعات با موفقیت ذخیره شد.", Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }); } void cast(){ btnread = (Button) findViewById(R.id.btnread) ; btnwirte=(Button) findViewById(R.id.btnwire); textView= (TextView) findViewById(R.id.txtview); editText = (EditText) findViewById(R.id.edittext); } }
توضیح سورس کد بالا :
اولین کار و برای شروع کد نویسی جاوا ! معرفی و عملیات کست کردن دکمه و Textview ها و …
Button btnread,btnwirte; TextView textView; EditText editText; public static String filename="my";
سپس تابع زیر را می نویسیم و در متد onCreate فراخوانی می کنیم.
void cast(){ btnread = (Button) findViewById(R.id.btnread) ; btnwirte=(Button) findViewById(R.id.btnwire); textView= (TextView) findViewById(R.id.txtview); editText = (EditText) findViewById(R.id.edittext); }
و اما می رسیم به سورس کد دکمه btnwrite و یا نوشتن اطلاعات که ورودی را از کاربر دریافت می کنیم به کمک EditText و سپس توسط یک متغییر رشته ای بنام msg از کاربر دریافت می کنیم.
String msg=editText.getText().toString();
و اما سورس کد آخر مربوط به نوشتن اطلاعات که متاسفانه توضیح فراخوانی داره و باید حتما جهت هرچه بهتر یادگیری فیلم آموزشی رو دانلود کنید.
try { FileOutputStream Fops= openFileOutput(filename,MODE_PRIVATE); Fops.write(msg.getBytes()); Fops.close(); Toast.makeText(MainActivity.this, "اطلاعات با موفقیت ذخیره شد.", Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
لطفا فیلم آموزشی رو هم ببنید برای توضیحات بیشتر :
دانلود فیلم آموزشی نوشتن اطلاعات حافظه داخلی فایل ها اندروید استودیو FileOutputStream
حجم فیلم : ۳۷ مگابایت
پسورد فایل فشرده : homeandroid.ir
منبع آموزش : خانه اندروید
سلام. برنامه به درستی کار میکنه. اما هر چی میگردم فایل تکست ذخیره شده در گوشی سیمولاتور پیدا نمیکنم. مسیری که در بالا اشاره کردین هم نیست. سرچ هم زدم چیزی پیدا نکرد. چگونه فایل ایجاد شده را ببینم؟؟
سلام و درود
این آموزش قدیمی ست
لازم هست در کانال تلگرامی آموزش جدید کار با فایل ها رو مشاهده بفرمایین.
در کانال جستجو کنید کار با فایل کاتلین
بله از ۶ بالاتر تست کردم .. پرمیژن ها رو چک میکنم … ممنون
سلام ..
ببخشید من از هر طریقی امتحان میکنم این ارور دارم چه وقتی روی شبیه ساز اجرا میگیرم چه وقتی روی گوشی خودم …
java.io.filenotfoudexception : /storge/ … : open fiaild: ENOENT (NO SUCH FILE OR DIRECTORY )
دیگه نمیدونم چیکار کنم 🙁
سلام و احترام
دقت بفرمایین اگر روی اندروید ورژن های بالاتر از ۶ تست می کنید باید حتما پرمیژن ران تایم رو بگیرن.
و سپس دستورات رو پیاده سازی کنید.
و اگر به غیر از اینصورت هست پیغام مربطه به معنی ناموجود بودن فایل در دایرکتوری مورد نظر هست.
با احترام.
سلام سایتتون ویروسی شده، اگه رفعش نکنید چند وقت دیگه شاهد افت سایتتون خواهید بود.
سلام دوست گرامی از لطفا و بزرگواری شما سپاسگزارم.
موضوع رو بررسی کردم و متاسفانه ۷ ویروس پیدا شد.
از شما صمیمانه سپاسگزارم بابت گزارشی که برای بنده ارسال کردین.
لطفا مجددن بررسی و در صورتی که بازم مشکل برطرف نشده بود اطلاع بدین ممنونم موفق باشین.
با تشکر از شما
با احترام.
سلام
این فایل درکجا ذخیره میشه؟ اگر اسمشو بذارم file.txt یک فایل تکست ایجاد می کنه؟ چجوری میتونم فایلشو ببینم ؟
مرسی
سلام و احترام
اگر در امیلتور در حال تست هستین مسیر زیر :
“storage/emulated/0/Android/data/packge name/files/file.txt”;
موفق باشین
متشکرم