آموزش اندروید استودیوآموزش های برنامه نویسی اندروید

آموزش برنامه نویسی اندروید با اندروید استودیو (بخش پنجاه و نهم: نوشتن در فایل در دایرکتوری معین )

در بخش قبلی در مورد نحوه خواندن از یک فایل Text در دایرکتوری مشخص صحبت کردیم.

دیدیم که می توان با استفاده از کلاس Environment به فایل تکست دسترسی داشت، سپس با استفاده از کلاس File ، آن فایل را به برنامه معرفی کردیم و در آخر محتویات فایل تکست را به رشته String تبدیل نمودیم.

در این بخش می خواهیم برعکس این کار را انجام دهیم.

یعنی عمل نوشتن در فایل Text با استفاده از یک رشته را انجام بدهیم.

در بخش قبلی از کلاس FileInputStream برای وارد نمودن اطلاعات از فایل به اپلیکیشن استفاده کردیم.

از آنجایی که این کلاس جریان بایت های یک فایل را می پذیرد، می تواند با انواع مختلف فایل کار کند.

در این بخش می خواهیم از کلاس FileOutputStream برای وارد نمودن اطلاعات از پروژه (اپلیکیشن) به فایل خروجی استفاده نماییم. ( نوشتن در فایل یا عمل Write )

در این بخش نیز از کلاس FileOuputStream که رفتاری مشابه دارد و اطلاعات را به جریانی از بایت ها برای ارسال به فایل، تبدیل می کند، استفاده می شود.

 از این کلاس می توان برای فایل های مختلف استفاده نمود.

اگر فرض کنیم فایل را به صورت زیر، از دایرکتوری مشخص مثلا (/android/) با نام “1” که پسوند txt. دارد ، به کد جاوای برنامه معرفی کرده باشیم…

String fileName = "1.txt";
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String pathDir = baseDir + "/Android/";

File myfile = new File(pathDir + File.separator + fileName);

برای نوشتن بر روی فایل از این کد استفاده خواهیم نمود.

FileOutputStream stream = new FileOutputStream(myfile); // نام فایل است myfile
        try {
            stream.write("Gsm Developers".getBytes()); //به جریانی از بایت ها تبدیل شده و بر روی فایل نوشته می شود "Gsm Developers" در قسمت اول، رشته ی
        } finally {
            stream.close();
        }

شرح کد:

 

فرض می کنیم فایلی به صورتی که در تصویر مشاهده می کنید وجود دارد.

مشخصات این فایل بدین صورت است:

Name: 1.txt

Directory: /Android/

نام و دایرکتوری فایل را به صورت زیر در کدجاوای پروژه مشخص می کنیم:

String fileName = "1.txt";
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String pathDir = baseDir + "/Android/";

در مرحله ی بعدی یک شی به نام myfile از کلاس File می سازیم و با استفاده از مسیر دایرکتوری که به برنامه گفتیم و نام فایلی که می خواهیم آن را تعریف می کنیم.

File myfile = new File(pathDir + File.separator + fileName);

در قسمت اول، pathDir یعنی مسیر دایرکتوری و در قسمت سوم، fileName یعنی همان نام فایل از ورودی های سازنده برای این شی می باشند.

برای نوشتن بر روی فایل بدین ترتیب عمل می کنیم.

ابتدا یک شی به نام stream از کلاس FileOutputStream ، می سازیم و فایل را به عنوان ورودی سازنده ی آن شی ، قرار می دهیم.

FileOutputStream stream = new FileOutputStream(myfile);

در قسمت بعد، از آنجایی که می خواهیم یک متن را به فایل تکست، اضافه نماییم، کد زیر را می نویسیم.

stream.write("Gsm Developers".getBytes());

این کد، رشته ی “Gsm Developers” را به جریانی از بایت ها تبدیل نموده و در فایل write می کند.

نکته:

در بعضی کامپایلرها مثلا Android Studio ، به دلیل آن که فایل ممکن است در حافظه موجود نباشد یا به هر دلیلی قابل نوشتن نباشد، کدی که مربوط به کلاس FileOutputStream است را در ساختار try-catch می نویسیم.

FileOutputStream stream = null;
        try {
            stream = new FileOutputStream(myfile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        try {
            stream.write("Gsm Developers".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                stream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

برای دادن دسترسی ها و مجوزهای لازم، باید به قسمت AndroidManifest.xml رفته و کد زیر را برای نوشتن در حافظه ی خارجی بنویسیم.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

پروژه را Run می کنیم.

اگر به فایل رجوع کنید ، می بینید که محتوای آن به رشته ای که شما در کد نوشتید، تبدیل شده است.

کد کامل MainActivity.java

import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String fileName = "1.txt";
        String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
        String pathDir = baseDir + "/Android/";

        File myfile = new File(pathDir + File.separator + fileName);

        FileOutputStream stream = null;
        try {
            stream = new FileOutputStream(myfile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        try {
            stream.write("Gsm Developers".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                stream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

Arash

طراح سایت و برنامه نویس

‫4 دیدگاه ها

  1. باسلام مطالبتان بسیار مفید بودند خیلی سپاس گذارم . ادامه مطالب را میگذارید؟؟؟

    1. درود

      فعلا بخش برنامه نویسی نیروش رو نداریم در اولین فرصت ادامه میدیم

  2. سلام من تازه با سایت خوبتون آشنا شدم چطور می تونم به آموزش های برنامه نویسی اندروید به صورت یکجا دسترسی داشته باشم؟

    1. داریم دوره ویدیویی تولید میکنیم توصیه میکنم به کانالمون جوین بشید @gsm_developers

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا