android学习笔记9--------------SD卡读写文件
10143 点击·0 回帖
![]() | ![]() | |
![]() | 把文件存入SD卡中 首先加入读写权限 SD卡创建与删除文件权限 <uses-permission Android:name="Android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> SD卡写入数据权限 <uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> ![]() 点击保存前: ![]() 点击保存: ![]() SD卡根目录多了123.txt文件 ![]() 点击读取: ![]() 读取成功。 代码: [java] import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import Android.app.Activity; import Android.os.Bundle; import Android.os.Environment; import Android.view.View; import Android.view.View.OnClickListener; import Android.widget.Button; import Android.widget.EditText; import Android.widget.TextView; import Android.widget.Toast; import com.luku.file.service.FileService; public class fileActivity extends Activity { private EditText editText=null; private Button button =null; private TextView content =null; private Button read=null; private TextView textView1=null; private Button exit=null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView1=(TextView)findViewById(R.id.textView1); content=(TextView)findViewById(R.id.content); editText=(EditText)findViewById(R.id.filename); button=(Button)findViewById(R.id.baocun); read=(Button)findViewById(R.id.read); exit=(Button)findViewById(R.id.exit); button.setOnClickListener(listener); read.setOnClickListener(listener); exit.setOnClickListener(listener); } private OnClickListener listener=new OnClickListener() { int resId = R.string.success; @Override public void onClick(View v) { Button btn=(Button)v; File file=new File(Environment.getExternalStorageDirectory(),//得到SD卡根目录 editText.getText().toString()); //保存文件的文件名 switch (btn.getId()) { case R.id.baocun: if(Environment.getExternalStorageState(). equals(Environment.MEDIA_MOUNTED)) //判断SD卡是否存在,并且可以可以读写 { try { FileOutputStream stream=new FileOutputStream(file); FileService.save(stream, content.getText().toString()); } catch (IOException e) { e.printStackTrace(); resId = R.string.error; Toast.makeText(fileActivity.this, resId, Toast.LENGTH_LONG).show(); } Toast.makeText(fileActivity.this, resId, Toast.LENGTH_LONG).show(); } else { Toast.makeText(fileActivity.this, "SD卡不存在或写保护", Toast.LENGTH_LONG).show(); } break; case R.id.read: try { InputStream instream=new FileInputStream(file); String string=FileService.read(instream); System.out.println(string); textView1.setText(string.toString()); } catch (Exception e) { e.printStackTrace(); Toast.makeText(fileActivity.this, "读取失败", Toast.LENGTH_LONG).show(); } break; case R.id.exit: Android.os.Process.killProcess(Android.os.Process.myPid()); break; default: break; } } }; } import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import Android.app.Activity; import Android.os.Bundle; import Android.os.Environment; import Android.view.View; import Android.view.View.OnClickListener; import Android.widget.Button; import Android.widget.EditText; import Android.widget.TextView; import Android.widget.Toast; import com.luku.file.service.FileService; public class fileActivity extends Activity { private EditText editText=null; private Button button =null; private TextView content =null; private Button read=null; private TextView textView1=null; private Button exit=null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView1=(TextView)findViewById(R.id.textView1); content=(TextView)findViewById(R.id.content); editText=(EditText)findViewById(R.id.filename); button=(Button)findViewById(R.id.baocun); read=(Button)findViewById(R.id.read); exit=(Button)findViewById(R.id.exit); button.setOnClickListener(listener); read.setOnClickListener(listener); exit.setOnClickListener(listener); } private OnClickListener listener=new OnClickListener() { int resId = R.string.success; @Override public void onClick(View v) { Button btn=(Button)v; File file=new File(Environment.getExternalStorageDirectory(),//得到SD卡根目录 editText.getText().toString()); //保存文件的文件名 switch (btn.getId()) { case R.id.baocun: if(Environment.getExternalStorageState(). equals(Environment.MEDIA_MOUNTED)) //判断SD卡是否存在,并且可以可以读写 { try { FileOutputStream stream=new FileOutputStream(file); FileService.save(stream, content.getText().toString()); } catch (IOException e) { e.printStackTrace(); resId = R.string.error; Toast.makeText(fileActivity.this, resId, Toast.LENGTH_LONG).show(); } Toast.makeText(fileActivity.this, resId, Toast.LENGTH_LONG).show(); } else { Toast.makeText(fileActivity.this, "SD卡不存在或写保护", Toast.LENGTH_LONG).show(); } break; case R.id.read: try { InputStream instream=new FileInputStream(file); String string=FileService.read(instream); System.out.println(string); textView1.setText(string.toString()); } catch (Exception e) { e.printStackTrace(); Toast.makeText(fileActivity.this, "读取失败", Toast.LENGTH_LONG).show(); } break; case R.id.exit: Android.os.Process.killProcess(Android.os.Process.myPid()); break; default: break; } } }; } FileService文件 [java] import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class FileService { /** * 保存数据 * @param stream * @param content * @throws IOException */ public static void save(OutputStream stream , String content) throws IOException { stream.write(content.getBytes()); stream.close(); } /** * 读取数据 * @param inStream * @return * @throws IOException */ public static String read(InputStream inStream) throws IOException { ByteArrayOutputStream outputStream=new ByteArrayOutputStream(); int len=-1; byte[] buffer =new byte[1024]; while( (len=inStream.read(buffer))!=-1 ) { outputStream.write(buffer, 0, len); } byte[] data = outputStream.toByteArray(); inStream.close(); outputStream.close(); return new String(data); } } import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class FileService { /** * 保存数据 * @param stream * @param content * @throws IOException */ public static void save(OutputStream stream , String content) throws IOException { stream.write(content.getBytes()); stream.close(); } /** * 读取数据 * @param inStream * @return * @throws IOException */ public static String read(InputStream inStream) throws IOException { ByteArrayOutputStream outputStream=new ByteArrayOutputStream(); int len=-1; byte[] buffer =new byte[1024]; while( (len=inStream.read(buffer))!=-1 ) { outputStream.write(buffer, 0, len); } byte[] data = outputStream.toByteArray(); inStream.close(); outputStream.close(); return new String(data); } } main.xml文件 [java] <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android" Android:orientation="vertical" Android:layout_width="fill_parent" Android:layout_height="fill_parent" > <RelativeLayout xmlns:Android="http://schemas.android.com/apk/res/android" Android:orientation="vertical" Android:layout_width="fill_parent" Android:layout_height="wrap_content"> <TextView Android:layout_width="90px" Android:layout_height="wrap_content" Android:text="文件名称:" Android:textSize="21px" Android:id="@+id/filenamelebal" /> <EditText Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:layout_toRightOf="@id/filenamelebal" Android:layout_alignTop="@id/filenamelebal" Android:id="@+id/filename" ></EditText> ></RelativeLayout> <TextView Android:layout_width="90px" Android:layout_height="wrap_content" Android:text="内容:" Android:textSize="21px" /> <EditText Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:minLines="3" Android:id="@+id/content" ></EditText> <LinearLayout Android:id="@+id/linearLayout1" Android:layout_width="match_parent" Android:layout_height="wrap_content"> <Button Android:layout_height="wrap_content" Android:id="@+id/baocun" Android:text="保存" Android:layout_width="wrap_content"></Button> <Button Android:text="读取" Android:id="@+id/read" Android:layout_width="wrap_content" Android:layout_height="wrap_content"></Button> <Button Android:text="退出" Android:id="@+id/exit" Android:layout_width="wrap_content" Android:layout_height="wrap_content"></Button> </LinearLayout> <TextView Android:text="读取内容显示" Android:id="@+id/textView1" Android:layout_width="wrap_content" Android:layout_height="wrap_content"> </TextView> </LinearLayout> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android" Android:orientation="vertical" Android:layout_width="fill_parent" Android:layout_height="fill_parent" > <RelativeLayout xmlns:Android="http://schemas.android.com/apk/res/android" Android:orientation="vertical" Android:layout_width="fill_parent" Android:layout_height="wrap_content"> <TextView Android:layout_width="90px" Android:layout_height="wrap_content" Android:text="文件名称:" Android:textSize="21px" Android:id="@+id/filenamelebal" /> <EditText Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:layout_toRightOf="@id/filenamelebal" Android:layout_alignTop="@id/filenamelebal" Android:id="@+id/filename" ></EditText> ></RelativeLayout> <TextView Android:layout_width="90px" Android:layout_height="wrap_content" Android:text="内容:" Android:textSize="21px" /> <EditText Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:minLines="3" Android:id="@+id/content" ></EditText> <LinearLayout Android:id="@+id/linearLayout1" Android:layout_width="match_parent" Android:layout_height="wrap_content"> <Button Android:layout_height="wrap_content" Android:id="@+id/baocun" Android:text="保存" Android:layout_width="wrap_content"></Button> <Button Android:text="读取" Android:id="@+id/read" Android:layout_width="wrap_content" Android:layout_height="wrap_content"></Button> <Button Android:text="退出" Android:id="@+id/exit" Android:layout_width="wrap_content" Android:layout_height="wrap_content"></Button> </LinearLayout> <TextView Android:text="读取内容显示" Android:id="@+id/textView1" Android:layout_width="wrap_content" Android:layout_height="wrap_content"> </TextView> </LinearLayout> 配置文件 [java] <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:Android="http://schemas.android.com/apk/res/android" package="com.luku.file" Android:versionCode="1" Android:versionName="1.0"> <uses-sdk Android:minSdkVersion="8" /> <uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission Android:name="Android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> <application Android:icon="@drawable/icon" Android:label="@string/app_name"> <uses-library Android:name="Android.test.runner"></uses-library> <activity Android:name=".fileActivity" 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> <instrumentation Android:name="Android.test.InstrumentationTestRunner" Android:targetPackage="com.luku.file" Android:label="Test for my app" ></instrumentation> </manifest> <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:Android="http://schemas.android.com/apk/res/android" package="com.luku.file" Android:versionCode="1" Android:versionName="1.0"> <uses-sdk Android:minSdkVersion="8" /> <uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission Android:name="Android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> <application Android:icon="@drawable/icon" Android:label="@string/app_name"> <uses-library Android:name="Android.test.runner"></uses-library> <activity Android:name=".fileActivity" 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> <instrumentation Android:name="Android.test.InstrumentationTestRunner" Android:targetPackage="com.luku.file" Android:label="Test for my app" ></instrumentation> </manifest> | |
![]() | ![]() |