حافظه داخلی در برنامه نویسی اندروید

4 سال پیش
حافظه داخلی در برنامه نویسی اندروید

حافظه داخلی در برنامه نویسی اندروید

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، در مورد حافظه داخلی در برنامه نویسی اندروید (Android Internal Storage)صحبت خواهیم کرد.

اندروید انواع مختلفی از فضای ذخیره سازی را برای برنامه ها فراهم می کند تا داده های خود را ذخیره کنند. این مکان های ذخیره سازی تنظیمات مشترک، حافظه داخلی و خارجی، ذخیره سازی SQLite و فضای ذخیره سازی از طریق اتصال شبکه هستند.

در این آمورش قصد داریم حافظه داخلی در برنامه نویسی اندروید را بررسی کنیم. حافظه داخلی که ذخیره اطلاعات خصوصی در حافظه دستگاه بر عهده آن است.

وقتی کاربر برنامه شما را حذف می کند، این فایل ها بصورت پیش فرض خصوصی هستند و فقط توسط برنامه شما قابل دسترسی هستند و حذف می شوند.

نوشتن فایل

به منظور استفاده از حافظه داخلی برای نوشتن برخی داده ها در فایل، از متد () openFileOutput استفاده می شود. برای استفاده از این متد باید نام فایل و . نوع و حالت آن نیز ذکر شود. حالت می تواند خصوصی، عمومی و غیره باشد. نحو آن در زیر آورده شده است:

FileOutputStream fOut = openFileOutput("file name here",MODE_WORLD_READABLE);

متد ()openFileOutput  نمونه ای از FileOutputStream را برمی گرداند. بنابراین شما آن را در شی FileInputStream دریافت می کنید. پس از آن می توانید متد توشتن (write) را فراخوانی کنید تا داده ها را روی فایل بنویسید. نحو آن در زیر آورده شده است:

String str = "data";
fOut.write(str.getBytes());
fOut.close();

 

خواندن فایل

برای اینکه از فایلی که ایجاد کرده اید را بخوانید، متد ()openFileInput  را با نام فایل فراخوانی کنید. این نمونه ای از FileInputStream را برمی گرداند. نحو آن در زیر آورده شده است:

FileInputStream fin = openFileInput(file);

بعد از آن، می توانید متد خواندن (read) را فراخوانی کنید تا هر بار یک کاراکتر را از فایل بخوانید و سپس می توانید آن را چاپ کنید. نحو آن در زیر آورده شده است:

int c;
String temp="";
while( (c = fin.read()) != -1){
   temp = temp + Character.toString((char)c);
}

//string temp contains all the data of the file.
fin.close();

 

به غیر از متد های ۰ متد های دیگری نیز وجود دارد که برای نوشتن بهتر فایل ها توسط کلاس FileOutputStream ارائه شده است. این متد ها در زیر ذکر شده است:

  • (FileOutputStream(File file, boolean append

این متد FileOutputStream جدید را برای نوشتن فایل ی سازد

  • ()getChannel 

این روش FileChannel فقط قابل نوشتن را برمی گرداند که موقعیت خود را با این جریان به اشتراک می گذارد

  • ()getFD 

این متد توصیفگر پرونده اصلی را برمی گرداند

  • (write(byte[] buffer, int byteOffset, int byteCount

این متد تعداد بایت ها را از بافر آرایه بایت شروع می کند که از موقعیت جابجایی به این جریان شروع می شود

 

به غیر از متد های write و close، متد های دیگری نیز وجود دارد که برای خواندن بهتر پرونده ها توسط کلاس FileInputStream ارائه شده است. این متد ها در زیر ذکر شده است:

  • ()available

این متد تعداد تخمینی از بایت هایی را برای جلوگیری از ورود داده های اضافی برمی گرداند.

()getChannel

این متد FileChannel فقط قابل خواندن را بازمی گرداند که موقعیت خود را با این جریان به اشتراک می گذارد

  • ()getFD 

این متد توصیفگر پرونده اصلی را برمی گرداند

(read (byte [] buffer، int byteOffset، int byteCount

این متد حداکثر بایت های طول این جریان را می خواند و آنها را در آرایه بایت b از صفر شروع می کند

 

مثال

در اینجا مثالی وجود دارد که استفاده از حافظه داخلی را برای ذخیره و خواندن فایل ها نشان می دهد. این برنامه  به شما امکان خواندن و نوشتن از حافظه داخلی را می دهد.

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

شرح مراحل 

۱ شما از Android Studio IDE برای ایجاد یک برنامه Android در یک پکیج com.example.sairamkrishna.myapplication استفاده خواهید کرد.
۲ برای اضافه کردن کد لازم، فایل src / MainActivity.java را تغییر دهید.
۳ res / layout / activity_main را تغییر دهید تا مولفه های XML مربوطه اضافه شود
۴ برنامه را اجرا کنید و دستگاه اندرویدی در حال اجرا را انتخاب کنید و برنامه را روی آن نصب کنید و نتایج را تأیید کنید

در زیر محتوای پرونده فعالیت اصلی تغییر یافته src / MainActivity.java است

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
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.FileInputStream;
import java.io.FileOutputStream;

public class MainActivity extends Activity  {
   Button b1,b2;
   TextView tv;
   EditText ed1;

   String data;
   private String file = "mydata";

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

      b1=(Button)findViewById(R.id.button);
      b2=(Button)findViewById(R.id.button2);

      ed1=(EditText)findViewById(R.id.editText);
      tv=(TextView)findViewById(R.id.textView2);
      b1.setOnClickListener(new View.OnClickListener() {
         
         @Override
         public void onClick(View v) {
            data=ed1.getText().toString();
            try {
               FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE);
               fOut.write(data.getBytes());
               fOut.close();
               Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show();
            }
            catch (Exception e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
         }
      });

      b2.setOnClickListener(new View.OnClickListener() {
         
         @Override
         public void onClick(View v) {
            try {
               FileInputStream fin = openFileInput(file);
               int c;
               String temp="";
               while( (c = fin.read()) != -1){
                  temp = temp + Character.toString((char)c);
               }
               tv.setText(temp);
               Toast.makeText(getBaseContext(),"file read",Toast.LENGTH_SHORT).show();
            }
            catch(Exception e){
            }
         }
      });
   }
}

در زیر محتوای اصلاح شده xml res / layout / activity_main.xml آمده است.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
      
   <TextView android:text="Internal storage" android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
   
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Save"
      android:id="@+id/button"
      android:layout_alignParentBottom="true"
      android:layout_alignLeft="@+id/textView"
      android:layout_alignStart="@+id/textView" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:hint="Enter Text"
      android:focusable="true"
      android:textColorHighlight="#ff7eff15"
      android:textColorHint="#ffff25e6"
      android:layout_below="@+id/imageView"
      android:layout_alignRight="@+id/textView"
      android:layout_alignEnd="@+id/textView"
      android:layout_marginTop="42dp"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignStart="@+id/imageView" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="load"
      android:id="@+id/button2"
      android:layout_alignTop="@+id/button"
      android:layout_alignRight="@+id/editText"
      android:layout_alignEnd="@+id/editText" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Read"
      android:id="@+id/textView2"
      android:layout_below="@+id/editText"
      android:layout_toLeftOf="@+id/button2"
      android:layout_toStartOf="@+id/button2"
      android:textColor="#ff5bff1f"
      android:textSize="25dp" />
      
</RelativeLayout>

در زیر محتوای res / values / string.xml آمده است.

<resources>
   <string name="app_name">My Application</string>
</resources>

در زیر محتوای فایل AndroidManifest.xml آمده است.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

 

بیایید برنامه خود را اجرا کنیم! من تصور می کنم شما AVD خود را هنگام راه اندازی محیط ایجاد کرده اید. برای اجرای برنامه از Android studio، یکی از پرونده های فعالیت پروژه خود را باز کنید و از نوار ابزار روی Android StudioRun Icon کلیک کنید. Android Studio برنامه را روی AVD شما نصب کرده و شروع به کار می کند و اگر با تنظیمات و برنامه هایتان همه چیز خوب باشد، زیر پنجره شبیه ساز نمایش داده می شود.

 

 

اکنون کاری که شما باید انجام دهید اینست که  متنی را در این قسمت وارد کنید. به عنوان مثال، متن خاصی را وارد کرده ام. دکمه save را فشار دهید. اعلان زیر در AVD شما ظاهر می شود

 

 

اکنون با فشار دادن دکمه load، برنامه پرونده را خوانده و داده ها را نمایش می دهد. در صورت استفاده از اطلاعات ما، داده های زیر بازگردانده می شوند

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، در مورد حافظه داخلی در برنامه نویسی اندروید (Android Internal Storage)صحبت خواهیم کرد.

توجه داشته باشید که با تغییر دادن به تب DDMS می توانید این فایل را مشاهده کنید. در DDMS ،File explorer را انتخاب کرده و در این مسیر حرکت کنید.

tools>android>android device Monitor

این نیز در تصویر زیر نشان داده شده است:

 

منبع.

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

  1. نگاهی کلی به برنامه نویسی اندروید
  2. تنظیمات محیط  در برنامه نویسی اندروید
  3. معماری برنامه نویسی اندروید
  4. اجزای برنامه در برنامه نویسی اندروید
  5. Hello World در برنامه نویسی اندروید
  6. سازماندهی و دسترسی به منابع در برنامه نویسی اندروید
  7. فعالیت در برنامه نویسی اندروید
  8. سرویس در برنامه نویسی اندروید
  9. گیرنده های پخش در برنامه نویسی اندروید
  10. ارائه دهنده محتوا در برنامه نویسی اندروید
  11. قطعات در برنامه نویسی اندروید
  12. Intent و فیلتر در برنامه نویسی اندروید
  13. طرح بندی رابط کاربری در برنامه نویسی اندروید
  14. کنترل های رابط کاربری در برنامه نویسی اندروید
  15. مدیریت رویدادها در برنامه نویسی اندروید
  16. استایل و تم ها در برنامه نویسی اندروید
  17. اجزای سفارشی در برنامه نویسی اندروید
  18. کشیدن و رها کردن در برنامه نویسی اندروید
  19. نوتیفیکیشن ها در برنامه نویسی اندروید
  20. سرویس های مبتنی بر مکان در برنامه نویسی اندروید
  21. ارسال ایمیل در برنامه نویسی اندروید
  22. ارسال پیامک در برنامه نویسی اندروید
  23. تماس های تلفنی در برنامه نویسی اندروید
  24. انتشار برنامه اندروید
  25. آموزش Alert Dialog در برنامه نویسی اندروید
  26. انیمیشن در برنامه نویسی اندروید
  27. ضبط صدا در برنامه نویسی اندروید
  28. مدیریت صدا در برنامه نویسی اندروید
  29. آموزش Auto Complete در برنامه نویسی اندروید
  30. بهترین شیوه ها در برنامه نویسی اندروید
  31. بلوتوث در برنامه نویسی اندروید
  32. استفاده از دوربین در برنامه نویسی اندروید
  33. کلیپ بورد در برنامه نویسی اندروید
  34. فونت سفارشی در برنامه نویسی اندروید
  35. پشتیبان گیری از داده ها در برنامه نویسی اندروید
  36.  ابزارهای توسعه دهنده در برنامه نویسی اندروید
  37. آموزش شبیه ساز در برنامه نویسی اندروید
  38. اتصال به فیس بوک در برنامه نویسی اندروید
  39. حرکات لمسی در برنامه نویسی اندروید
  40. آموزش گوگل مپ در برنامه نویسی اندروید
  41. افکت های تصویر در برنامه نویسی اندروید
  42. Image Switcher در برنامه نویسی اندروید
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه