English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
توضيح عملية ملفات أندرويد
توضيح عملية ملفات أندرويد في الواقع هو عملية معالجة ملفات Java. لذا إذا كنت تعرف عملية ملفات IO في Java جيدًا، فإن عملية ملفات أندرويد ستكون سهلة جدًا. حسنًا، لن نطيل، دعونا نبدأ في موضوع اليوم.
دعونا نبدأ بمشروع صغير
أولاً، هذا هو ملف التخطيط، وهو بسيط جدًا، لذا دعونا نبدأ بالكود مباشرةً.
<LinearLayout 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:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="文件名称" /> <EditText android:id="@+id/et_filename" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="file name" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="文件内容" /> <EditText android:id="@+id/et_filecontent" android:layout_width="match_parent" android:layout_height="wrap_content" android:lines="7" android:hint="file content" /> <Button android:id="@+id/btn_save" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="toSave" android:text="Save" /> <Button android:id="@+id/btn_get" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="getFile" android:text="Get" /> </LinearLayout>
ثم هو ملف واجهة المستخدم الرئيسية الخاص بنا الخاص بـJava. تستمر الكود
package com.mark.storage; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.mark.service.FileService; public class MainActivity extends Activity { private EditText mEt_filename,mEt_filecontent; private Button mBtn_save; private void init(){ mEt_filecontent = (EditText) findViewById(R.id.et_filecontent); mEt_filename = (EditText) findViewById(R.id.et_filename); mBtn_save = (Button) findViewById(R.id.btn_save); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } /** * حفظ البيانات في ملف * @param view */ public void toSave(View view) { String fileName = mEt_filename.getText().toString(); String fileContent = mEt_filecontent.getText().toString(); FileService service = new FileService(getApplicationContext()); boolean isSucceed = service.save(fileName, fileContent); if(isSucceed){ Toast.makeText(getApplicationContext(), "تهانيًا، تم حفظ ملفك بنجاح!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "معذرة، فشلت في حفظ ملفك!", Toast.LENGTH_SHORT).show(); } } public void getFile(View view){ String fileName = mEt_filename.getText().toString(); FileService service = new FileService(getApplicationContext()); String fileContent = service.getFile(fileName); if(fileContent!=null || !fileContent.equals("")) { mEt_filecontent.setText(fileContent); } else { Toast.makeText(getApplicationContext(), "عذراً، فشل في قراءة الملف!", Toast.LENGTH_SHORT).show(); } } }
هل تشعر بأن الكود داخله شيء غريب؟ ما هو FileService؟
في الواقع، FileService هي فئتها الخاصة بنا، وظيفتها الرئيسية هي مساعدتنا في تنفيذ عمليات حفظ وقراءة الملفات وما إلى ذلك. وفيما يلي، سنرفق الكود
package com.mark.service; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import android.content.Context; public class FileService { // فئة FileOutputStream من الأندرويد التي يمكنها الحصول على تيار النسخ المباشر بسرعة، يرجى ملاحظة أن المعامل لا يجب أن يكون مسارًا، بل يجب أن يكون اسم الملف فقط private Context mContext; public FileService(Context context) { this.mContext = context; } /** * طريقة لتحفظ الملف * @param fileName * @param fileContent * @return */ public boolean save(String fileName, String fileContent) { try { // إذا كان используетًا Context.MODE_PRIVATE، فإنه يسمح فقط لتطبيق واحد الوصول إلى هذا الملف، ويعمل على إضافة بيانات تغطية FileOutputStream fos = mContext.openFileOutput(fileName, Context.MODE_PRIVATE); fos.write(fileContent.getBytes()); fos.close(); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * الحصول على معلومات تفصيلية مسبقًا محفوظة للملفات * @param fileName * @return */ public String getFile(String fileName) { String fileContent = ""; try{ FileInputStream fis = mContext.openFileInput(fileName); byte[] buf = new byte[1024]; int len; ByteArrayOutputStream bais = new ByteArrayOutputStream(); while((len = fis.read(buf))!= -1){ bais.write(buf, 0, len); } byte[] data = bais.toByteArray(); fileContent = new String(data); fis.close(); return fileContent; } e.printStackTrace(); return "أعتذر، فشل في قراءة الملف!"; } } }
تحليل الكلاس الأعمال
الآن دعونا نبدأ في الموضوع الأساسي. يكمن الجوهر لهذا المشروع الصغير في هذا كلاس الأعمال، السبب في ذلك هو:
النواة
الفكرة المتدرجة، وضع الفئات المختلفة للوظائف في حزم مختلفة، مما يسهل调试 البرنامج وييسر صيانة الكود في المستقبل.
شكرًا على القراءة، آمل أن تساعدكم، شكرًا لدعمكم لموقعنا!