使用Files存储文件笔记

来源:互联网 发布:北京工业大学网络教育 编辑:程序博客网 时间:2024/05/19 04:56

如果想对SD卡写入内容的时候,要记得想MainFestt添加相应的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

以下是整个程序的截图:



以下是我这个程序的代码:

package hlp.com;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;


import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;


public class MyFiles  extends Activity{


private TextView tv;
private EditText input;
private Button write, read, back;
private EditText disView;
private CheckBox read_Sd, write_Sd;

private static final String FILE_NAME = "fileDemo.txt";
private final int MODE = Context.MODE_WORLD_READABLE 
+ Context.MODE_WORLD_WRITEABLE;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.myfiles);
createView();

setListener();
}

public void createView() {

tv = (TextView)findViewById(R.id.file_Text);
input = (EditText)findViewById(R.id.input_Sth);
disView = (EditText)findViewById(R.id.disFile);

write = (Button)findViewById(R.id.write_File);
read = (Button)findViewById(R.id.read_File);
back = (Button)findViewById(R.id.file_Back);

read_Sd = (CheckBox)findViewById(R.id.read_Sd);
write_Sd = (CheckBox)findViewById(R.id.write_Sd);

}//end 


//
public void setListener() {

write.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
FileOutputStream fos = null;
String s = input.getText().toString();

try {

if (write_Sd.isChecked()) {

File dir = new File("/sdcard/");

if (dir.exists() && dir.canWrite() ) {

File newFile = new File(dir.getAbsolutePath() + "/" + FILE_NAME);
newFile.createNewFile();

if(newFile.exists() && newFile.canWrite()) {

fos = new FileOutputStream(newFile);
fos.write(s.getBytes());
tv.setText("文件写入SD卡成功,长度是: " + s.length());

}//end if

}//end if

else {

tv.setText("文件从SD卡写入错误!");
}//end else

}//end if
else {

fos = openFileOutput(FILE_NAME, MODE);
fos.write(s.getBytes());
tv.setText("文件写入成功,长度是: " + s.length());

}//end else 

//OutStreamWriter osw = new OutSteamWriter(fos)
//osw.write(s);
//

}//end try 

catch (Exception e ) {

e.printStackTrace();
}//end catch

finally {

if (fos != null) {

try {
fos.flush();
fos.close();
}//end try
catch (Exception e) {

e.printStackTrace();
}//end catch

}//end inside if

}//end finally

}//end onClick()

});

//读出
read.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub

FileInputStream fis = null;

try {

if (read_Sd.isChecked()) {

File dir = new File("/sdcard/");

if (dir.canRead() && dir.exists()) {

File newFile =  new File(dir.getAbsolutePath() + "/" + FILE_NAME);
newFile.createNewFile();

if(newFile.exists() && newFile.canRead()) {

fis = new FileInputStream(newFile);
byte[] readBytes = new byte[fis.available()];

while (fis.read(readBytes) != -1){}
String s = new String(readBytes);
disView.setText(s);
tv.setText("文件从SD卡读出成功!");

}//end if

}//end if

else {

tv.setText("文件从SD卡读出错误!");
}//end else

}//end if

else {

fis = openFileInput(FILE_NAME);
if (fis.available() == 0) {
return;
}//end inside if

//声明一个数组,用来存放缓冲区的内容
byte[] readBytes = new byte[fis.available()];

while ( fis.read(readBytes) != -1) {
}//end while 

String s = new String (readBytes);
disView.setText(s);
tv.setText("文件读出成功!");

}//end else 

}//end try 
catch (Exception e) {

e.printStackTrace();

}//end catch
}

});

back.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = null;

i = new Intent();
i.setClass(MyFiles.this, DataStorage.class);
MyFiles.this.finish();
}

});


}//end func


}//end all

原创粉丝点击