gpt4 book ai didi

java - 无法删除本地文件 - 错误 "Is a Directory"

转载 作者:太空宇宙 更新时间:2023-11-04 13:57:53 24 4
gpt4 key购买 nike

我搜索了广阔的互联网,但没有成功。我正在写入一个文件,然后尝试删除它。我的代码有一些注释掉的语句,我已经测试过它编写一个包含简单字符串内容的文件,这是有效的。但是,当我尝试让它从 EditText 创建文件(转换为字符串)时,它出现错误。我不明白。

请有人帮我解决这个问题。

当我按下删除按钮时,出现此错误:

04-14 11:40:38.086  24584-24584/com.test.dev.write_delete_local_file E/Exception﹕ File write failed: java.io.FileNotFoundException: /data/data/com.test.dev.write_delete_local_file/files: open failed: EISDIR (Is a directory)

MainActivity.java:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

editName = (EditText)findViewById(R.id.nameEdit);
editContent = (EditText)findViewById(R.id.contentEdit);
btnWrite = (Button)findViewById(R.id.btnWrite);
btnDelete = (Button)findViewById(R.id.btnDelete);

fileContents = (String) editContent.getText().toString();
fileName = (String) editName.getText().toString();

btnWrite.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){

writeFile(fileName, fileContents);
}

});

btnDelete.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
deleteTheFile(fileName);
}

});
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, 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();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}

private void writeFile(String name, String data) {
try {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput(name, Context.MODE_PRIVATE));
//OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("test.txt", Context.MODE_PRIVATE));
outputStreamWriter.write(data);
//outputStreamWriter.write("abcdefghijklmnop");
outputStreamWriter.close();

Toast.makeText(this.getBaseContext(), (CharSequence) this.getFilesDir().toString(), Toast.LENGTH_SHORT).show();
}
catch (IOException e) {
Log.e("Exception", "File write failed: " + e.toString());
}
}

public void deleteTheFile(String name){
File chosenFile = context.getFileStreamPath(name);
//File chosenFile = this.getFileStreamPath("test.txt");
boolean fileDeleted = chosenFile.delete();
if (fileDeleted) {
Log.d(TAG, name + " was deleted");
} else {
Log.d(TAG, name + " was not deleted");
}

}

最佳答案

我认为这是因为您的文件名是在 onCreate 方法中初始化的,因此如果您的 editTextXML 布局定义中没有文本,fileName 将为空。

您应该在 btnDelete 点击监听器中调用 (String) editName.getText().toString()。或者为 editText 设置文本更改监听器,并在每次文本更改时更新 fileName 字段。

关于java - 无法删除本地文件 - 错误 "Is a Directory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29632062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com