Files保存数据和资源的引用技术
1,文件保存数据
输出流:OpenFileOutput
输入流:OpenFileInput
2,将数据报讯到内存卡里面
操作内存卡需要一下三个权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />挂载权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />写权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />读取权限
//获得外部存储卡
//File file = Environment.getExternalStorageDirectory();
//获取制定文件sdcard位置的目录
File file =Environment.getExternalStoragePublicDirectory("DCIM");
3,android工程中获取资源的引用;
使用文件的方式保存数据
1,创建布局文件 activity_main.xml
<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: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=".MainActivity" > <EditText android:id="@+id/text_v1" android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center_horizontal" android:hint="输入框" /> <Button android:id="@+id/Save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/text_v1" android:onClick="show" android:text="保 存" /> <Button android:id="@+id/clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/Save" android:layout_below="@id/text_v1" android:onClick="show" android:text="清除输入框" /> <Button android:id="@+id/Read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/Save" android:onClick="show" android:text=" 读 取 " /> </RelativeLayout>
FileDemo操作数据,并显示
public class FileDemo extends Activity { private EditText text_v1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text_v1=(EditText)this.findViewById(R.id.text_v1); } // 按钮的监听器方法 public void show(View view) { switch (view.getId()) { case R.id.Save:// 保存 try { //将数据写到文件中 //参数一:文件名 //参数二:文件创建的模式;私有模式 FileOutputStream fos=this.openFileOutput("FileDemo", MODE_PRIVATE); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject("保存成内部文件的方式操作"); oos.flush(); oos.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show(); break; case R.id.Read: //读取保存的文件的数据 try { //读取文件的数据 FileInputStream fis=this.openFileInput("FileDemo"); ObjectInputStream ois =new ObjectInputStream(fis); String str =(String)ois.readObject(); text_v1.setText(str); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } break; case R.id.clear: //清空 text_v1.setText(""); break; } } }
数据保存到内存卡 关键代码
1,创建布局文件acivity_main.xml ,
<Button android:id="@+id/Save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/text_v1" android:onClick="show" android:text="保 存" />
操作布局的文件
// 按钮的监听器方法 public void show(View view) { switch (view.getId()) { case R.id.Save:// 保存 //获得外部存储卡 //File file = Environment.getExternalStorageDirectory(); //获得制定sdcard位置的目录 File file =Environment.getExternalStoragePublicDirectory("DCIM"); //在DCIM的目录下创建文件C++++++++++++++ File files= new File(file,"C++++++++++++++"); if(!files.exists()){ Boolean b=file.mkdir(); if(!b){ Toast.makeText(this, "不能创建", Toast.LENGTH_SHORT).show(); } } if(!files.canWrite()){ Toast.makeText(this, "不能写文件", Toast.LENGTH_SHORT).show(); } //在C++++++++++++++的目录下创建文件abc File file1 = new File(files,"abc"); try { FileOutputStream fos = new FileOutputStream(file1); fos.write("长沙".getBytes()); fos.flush(); fos.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show(); break; }
3,android工程中使用静态资源的方式
读取assets和res文件下的raw资源
text.txt文件的内容
raw文件下的text1.txt
运行效果:
详细代码:
<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: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=".MainActivity" > <EditText android:id="@+id/text_v1" android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center_horizontal" android:hint="输入框" /> <Button android:id="@+id/Save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/text_v1" android:onClick="show" android:text="保 存" /> <Button android:id="@+id/clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/Save" android:layout_below="@id/text_v1" android:onClick="show" android:text="清除输入框" /> <Button android:id="@+id/Read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/Save" android:onClick="show" android:text=" 读 取 " /> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/Read" android:layout_below="@+id/Read" android:layout_marginLeft="56dp" android:layout_marginTop="154dp" android:ems="10" android:inputType="textMultiLine"/> </RelativeLayout>
Dmo操作数据的显示,读取assets和res文件下的raw资源
public class Demo extends Activity{ private ImageView img; private EditText text_v1; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img=(ImageView)this.findViewById(R.id.imageView1); text_v1=(EditText)this.findViewById(R.id.text_v1); } public void show(View v){ switch (v.getId()) { case R.id.Save: //读取assets资源文件中的文件,使用流读取 try { //使用流读取Assets中的资源 InputStream is =this.getResources().getAssets().open("text.txt"); byte[] by= new byte[is.available()]; is.read(by); String str = EncodingUtils.getString(by,"GBK"); text_v1.setText(str); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; case R.id.Read: //读取assets资源文件中的图片 try { InputStream ism =this.getResources().getAssets().open("img_1.jpg"); byte[] bs = new byte[ism.available()]; ism.read(bs); //将荼毒到的字节转化成bmp格式的图片 Bitmap bmp=BitmapFactory.decodeByteArray(bs, 0, bs.length); //设置图片显示 img.setImageBitmap(bmp); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } break; case R.id.clear: //res文件中创建的raw文件下的文件 InputStream is1=this.getResources().openRawResource(R.raw.text1); byte[] by; try { by = new byte[is1.available()]; is1.read(by); String str1 = EncodingUtils.getString(by,"GBK"); text_v1.setText(str1); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; } } }