android文件的保存

 

 【序言】

1. 第一个是在布局的时候,文本框输入类型的定义

 2.第二个 就是在线性布局的时候,内容的布局错误 。注意android:orientation中的"vertical"跟"horizontal"的区别

 3 全局的变量给值 出现空指针 修改代码 加上FileService类的代码

 4. SDcard  的写入跟权限设置    8月一号更新

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" 

    >


 

代码:

package com.example.pro_filesave;

import com.example.service.FileService;

import android.R.string;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.support.v4.widget.SimpleCursorAdapter.ViewBinder;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
    EditText  filenametext = null;
    EditText  contentText = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        Button   button = (Button) this.findViewById(R.id.button_save);  //找到按钮
        filenametext = (EditText) this.findViewById(R.id.file_name);
        contentText = (EditText) this.findViewById(R.id.file_content);
        
        button.setOnClickListener(new ButtonClicklistener());    //对象
        
    } 
        @SuppressLint("ShowToast")
        private  final class ButtonClicklistener implements View.OnClickListener{

            
            @SuppressLint("ShowToast")
            public void onClick(View v) {
                String file_name = filenametext.getText().toString();
                String file_content = contentText.getText().toString();
                
                FileService   service = new FileService(getApplicationContext());
                try {
                    service.save(file_name,file_content);
                    Toast.makeText(getApplicationContext(), R.string.success, 1).show();
                    } 
                catch (Exception e) {
                    
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(), R.string.fail, 1).show();
                    
                }
            }

            private EditText findViewById(int fileContent) {
                // TODO Auto-generated method stub
                return null;
            }
        }
    
     
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}


  FileService的代码

package com.example.service;

import java.io.File;
import java.io.FileOutputStream;
import java.net.ContentHandler;

import com.example.pro_filesave.R.string;

import android.content.Context;

public class FileService {
	
	 private Context  context;
	 
	 public FileService(Context context) {
		super();
		this.context = context;
	}

  private void saveToSDcard(String file_name,String file_content)throws Exception{
	  
	   File  file=new File("",file_name);  //保存的SD卡的系统路径跟名称  , 也可以换成getApplicationContext()

	   FileOutputStream outputStream=new FileOutputStream(file);
	   
	   outputStream.write(file_content.getBytes());
	   outputStream.close();
	   
  }

	/**
	  * 保存文件
	  * @param 文件名称 
	  * @param 文件内容
	  * **/
	public void save(String file_name, String file_content) throws Exception{
		// TODO Auto-generated method stub      
		//私有模式创建文件,只能被该APP访问,写入的内容可能被覆盖原文件
		
		FileOutputStream  OutputStream=context.openFileOutput(file_name, Context.MODE_PRIVATE);
		
		OutputStream.write(file_content.getBytes());
		OutputStream.close();
	}
}

   写入SDcard的权限, 这些权限在于平时的积累

        <!--  往SDcard中创建跟删除的权限  -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
        <!-- 往SDCard中 写入数据的权限 -->
<uses-permission   android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


 

Android系统中保存文件,可以采用多种方式,具体取决于你想要保存文件的位置和用途。以下是几种常见的文件保存方式: 1. **内部存储(Internal Storage)**: 这是默认方式,保存在设备的内部存储空间中,对于其他应用是不可见的。可以使用`Context`的`openFileOutput`方法来创建和写入文件,它会返回一个`FileOutputStream`对象。例如: ```java FileOutputStream fos = openFileOutput("filename.txt", Context.MODE_PRIVATE); ``` 这样创建的文件只能被你的应用访问。 2. **外部存储(External Storage)**: 保存在设备的外部存储(如SD卡)上,这样保存文件其他应用也可能访问。可以使用`Environment.getExternalStorageDirectory()`获取外部存储的根目录,并结合`FileOutputStream`保存文件。例如: ```java File externalFile = new File(Environment.getExternalStorageDirectory(), "filename.txt"); FileOutputStream fos = new FileOutputStream(externalFile); ``` 注意,从Android 6.0(API级别23)开始,需要在运行时请求存储权限。 3. **共享文件夹(Shared Folders)**: 可以将文件保存到外部存储的共享文件夹中,例如`DCIM/Camera`文件夹。这需要获取到共享文件夹的路径,并使用`FileOutputStream`进行操作。 4. **数据库或SharedPreferences**: 对于小型数据,可以使用SQLite数据库或者SharedPreferences进行存储。这些方法主要用于存储结构化数据或轻量级的数据项。 5. **应用的内部缓存目录**: 可以将文件保存在应用的缓存目录中,这些文件在系统需要回收空间时可能会被删除。使用`Context`的`openFileOutput`方法并设置`MODE_APPEND`来添加到现有文件末尾或`MODE_WORLD_READABLE`(已弃用)来实现可访问性。 6. **应用的外部缓存目录**: 类似于内部缓存目录,但可以被系统更自由地清理。可以使用`Context`的`getExternalCacheDir()`方法来获取目录路径。 选择合适的存储方式时,应考虑到文件的安全性、应用的需求、用户的隐私等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GarethZzzzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值