Android在内部存储器上加载和保存文件
我的代码不工作,因为Android在内部存储器上加载和保存文件,android,Android,我的代码不工作,因为files==null在我尝试加载文件时崩溃,所以我认为它没有创建目录。 单击save时,创建的toast消息文件会显示出来 我认为它输出的路径是正确的。 Path:/data/data/com.example.tiagosilva.amob\u android/files/operationlist/ btn_saveOperationList.setOnClickListener(new View.OnClickListener() { String m
files==null
在我尝试加载文件时崩溃,所以我认为它没有创建目录。
单击save时,创建的toast消息文件会显示出来
我认为它输出的路径是正确的。
Path:/data/data/com.example.tiagosilva.amob\u android/files/operationlist/
btn_saveOperationList.setOnClickListener(new View.OnClickListener() {
String mText = "";
String n,x,y,z,r;
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
builder.setTitle("Save the File");
final EditText fileName = new EditText(v.getContext());
fileName.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(fileName);
builder.setPositiveButton("Save", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mText = fileName.getText().toString();
FileOutputStream fileOutputStream;
File file = new File(getContext().getFilesDir() +"/OperationLists/",mText);
Log.d("Files","Path: " + getContext().getFilesDir() +"/OperationLists/");
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
try
{
fileOutputStream = getContext().openFileOutput(mText, Context.MODE_PRIVATE);
for(int i=0;i<lv_operationList.getAdapter().getCount() -1;i++)
{
fileOutputStream.write(lv_operationList.getAdapter().toString().getBytes());
}
Toast.makeText(getActivity().getBaseContext(), "File Created",
Toast.LENGTH_LONG).show();
fileOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
}
});
btn_loadOperationList.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<String> fileList = new ArrayList<String>();
String path = getContext().getFilesDir() + "/OperationLists/";
Log.d("Files","Path: " +path);
File directory = new File(path);
File[] files = directory.listFiles();
Log.d("Files","Size: " +files.length);
if(files != null) {
for (int i = 0; i < files.length; i++) {
fileList.add(files[i].getName());
}
ArrayAdapter<String> directoryList = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1, fileList);
lv_listFiles.setAdapter(directoryList);
}
}
});
btn\u saveOperationList.setOnClickListener(新视图.OnClickListener(){
字符串mText=“”;
字符串n,x,y,z,r;
@凌驾
公共void onClick(视图v){
AlertDialog.Builder=新建AlertDialog.Builder(v.getContext());
setTitle(“保存文件”);
最终EditText文件名=新的EditText(v.getContext());
fileName.setInputType(InputType.TYPE\u CLASS\u TEXT);
setView(文件名);
setPositiveButton(“保存”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
mText=fileName.getText().toString();
FileOutputStream FileOutputStream;
File File=新文件(getContext().getFilesDir()+“/OperationLists/”,多行文字);
Log.d(“文件”,“路径:“+getContext().getFilesDir()+”/OperationList/”);
试一试{
createNewFile();
}捕获(IOE异常){
e、 printStackTrace();
}
尝试
{
fileOutputStream=getContext().openFileOutput(mText,Context.MODE\u PRIVATE);
对于(int i=0;i您能否在清单文件中添加写入外部存储和读取外部存储权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
尝试替换
File File=新文件(getContext().getFilesDir()+“/OperationLists/”,多行文字)
用这个
File File=新文件(getContext().getFilesDir().getAbsolutePath()+“/operationList/”,多行文字)
我有。而且没有意义,因为它是内部存储检查此链接: