• 黎活明8天快速掌握android视频教程14_把文件存放在SDCard


    把文件保存在手机的内部存储空间中

    1 首先必须在清单文件中添加权限

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="contract.test.savafileapplication" >
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name=".MyActivity"
                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>
        <!-- 在SDCard中创建与删除文件权限 -->
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
        <!-- 往SDCard写入数据权限 -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
    </manifest>

    1、我们来看下业务层的代码,业务层的异常不要进行处理交给控制层activity进行处理,activity通过业务层返回的异常就知道业务是否操作成功,就可以在界面上做出相应的显示了

    package contract.test.savafileapplication;
    
    import android.content.Context;
    import android.os.Environment;
    
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    
    public class FileService {
        private Context context;
    
        public FileService(Context context) {
            this.context = context;
        }
    
        public   void saveTosdCard(String fileName, String fileContext) throws Exception {
    
            File file  = new File(Environment.getExternalStorageDirectory(),fileName);
           FileOutputStream fileOutputStream =  new FileOutputStream(file);
           fileOutputStream.write(fileContext.getBytes());
           fileOutputStream.close();
       }
    
        public  String readFromSdCard(String filename) throws IOException
        {
            File file  = new File(Environment.getExternalStorageDirectory(),filename);
            FileInputStream fileInputStream = new FileInputStream(file);
    
            byte[] bytes = new byte[1024];
            ByteArrayOutputStream  byteArrayOutputStream = new ByteArrayOutputStream();
            /*byte是基本数据类型  如int类型
              Byte是byte的包装类*/
            int len = 0;
            while ((len = fileInputStream.read(bytes))!=-1)
            {
    
               byteArrayOutputStream.write(bytes,0,len);
            }
            byteArrayOutputStream.close();
            fileInputStream.close();
            String str = new String(byteArrayOutputStream.toString());
            return  str;
        }
    }

    activity的代码:

    package contract.test.savafileapplication;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.io.IOException;
    
    
    public class MyActivity extends Activity {
        private Button save , show;
        private EditText filename, filecontext;
        private TextView showContext;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_my);
            save = (Button)this.findViewById(R.id.saveButton);
            show = (Button)this.findViewById(R.id.showButton);
            filename = (EditText)this.findViewById(R.id.fileName_ET);
            filecontext = (EditText)this.findViewById(R.id.saveContext_ET);
    
            showContext = (TextView)this.findViewById(R.id.showConTextView);
    
            save.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                  String name =  filename.getText().toString();
                  String context = filecontext.getText().toString();
                  FileService fileService = new FileService(getApplicationContext());
                    try {
                        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
                        {
                            fileService.saveTosdCard(name,context);
                            Toast.makeText(getApplicationContext(),"文件保存成功!",Toast.LENGTH_LONG).show();
    
                        }
                        else
                        {
                            Toast.makeText(getApplicationContext(),"sdCard不存在或者写保护!",Toast.LENGTH_LONG).show();
                        }
    
                    } catch (Exception e) {
                        Toast.makeText(getApplicationContext(),"文件保存失败!",Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                    }
                }
            });
            show.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                  FileService fileService = new FileService(getApplicationContext());
                    String name =  filename.getText().toString();
                    try {
                        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
                        {
                            String str = fileService.readFromSdCard(name);
                            Toast.makeText(getApplicationContext(),"文件读取成功!",Toast.LENGTH_LONG).show();
                            showContext.setText(str);
                        }
                        else
                        {
                            Toast.makeText(getApplicationContext(),"sdCard不存在或者写保护!",Toast.LENGTH_LONG).show();
                        }
    
                    } catch (IOException e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(),"文件读取失败!",Toast.LENGTH_LONG).show();
                    }
                }
            });
    
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.my, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
            if (id == R.id.action_settings) {
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    }

    xml的代码:

    <?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"
        >
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="请输入要保存的文件名:"
            />
        <EditText
            android:id="@+id/fileName_ET"
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:hint="请输入要保存的文件名!"
            />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="请您输入要保存的内容:"
            />
        <EditText
            android:id="@+id/saveContext_ET"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="请您在此处输入文件内容!"
            />
        <Button
            android:id="@+id/saveButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="save"
            />
        <Button
            android:id="@+id/showButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="show"
            />
        <TextView
            android:id="@+id/showConTextView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            />
    </LinearLayout>
  • 相关阅读:
    Apache-Shiro分布式环境配置(与redis集成)(转)
    springboot整合mybatis将sql打印到日志(转)
    springboot中logback打印日志(转)
    Spring Boot Junit单元测试
    玩转Spring Boot 自定义配置、导入XML配置与外部化配置
    Windows开机自启动位置
    木马开机启动的六种方法(记录)
    用Delphi开发视频聊天软件
    Delphi用Socket API实现路由追踪
    前端工程师应该都了解的16个最受欢迎的CSS框架
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/6757318.html
Copyright © 2020-2023  润新知