Android未创建文件

用户名

我希望在单击按钮时将此片段写入一个csv文件,但我一直在获取java.io.IOException:打开失败:ENOENT(没有这样的文件或目录)。任何帮助将不胜感激。

public class AddFragment extends Fragment {

    static EditText spent,saved,coupons;
    Button writeExcelButton;
    String data;
    Spinner spinner;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.add_layout, container, false);

        setSpinnerContent(view);

        spent = (EditText) view.findViewById(R.id.spent1);
        saved = (EditText) view.findViewById(R.id.saved1);
        coupons = (EditText) view.findViewById(R.id.coupons1);

        writeExcelButton = (Button) view.findViewById(R.id.button_addGroc);
        writeExcelButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              updateSheet();
            }
        });

        return view;
    }

    private void setSpinnerContent (View view) {
        spinner = (Spinner) view.findViewById(R.id.groc_store);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(),
            R.array.store1, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
    }

    public void updateSheet() {
        try {
            // This is the string that should be written to file
            String mySpin =spinner.getSelectedItem().toString();
            data = mySpin + "," + spent.getText().toString() + "," + saved.getText().toString() + "," + coupons.getText().toString() + "/n";

            // This is the file that should be written to
            String sdCard = Environment.getExternalStorageDirectory().toString();
            File dir = new File(sdCard + "/dir");
            if (!dir.exists()) {
                dir.mkdir();
            }

            File myFile = new File(dir.getAbsolutePath(), "savings.csv");

            // if file doesn't exists, then create it
            if (!myFile.exists()) {
                myFile.createNewFile();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这就是我的LogCat的样子

11-14 13:29:23.681: W/System.err(14386): java.io.IOException: open failed: ENOENT (No such file or directory)
11-14 13:29:23.681: W/System.err(14386):    at java.io.File.createNewFile(File.java:948)
11-14 13:29:23.691: W/System.err(14386):    at com.example.myfirstapp.AddFragment.updateSheet(AddFragment.java:101)
11-14 13:29:23.691: W/System.err(14386):    at com.example.myfirstapp.AddFragment$1.onClick(AddFragment.java:59)
11-14 13:29:23.691: W/System.err(14386):    at android.view.View.performClick(View.java:4240)
11-14 13:29:23.691: W/System.err(14386):    at android.view.View$PerformClick.run(View.java:17721)
11-14 13:29:23.691: W/System.err(14386):    at android.os.Handler.handleCallback(Handler.java:730)
11-14 13:29:23.691: W/System.err(14386):    at android.os.Handler.dispatchMessage(Handler.java:92)
11-14 13:29:23.691: W/System.err(14386):    at android.os.Looper.loop(Looper.java:137)
11-14 13:29:23.691: W/System.err(14386):    at android.app.ActivityThread.main(ActivityThread.java:5103)
11-14 13:29:23.691: W/System.err(14386):    at java.lang.reflect.Method.invokeNative(Native Method)
11-14 13:29:23.691: W/System.err(14386):    at java.lang.reflect.Method.invoke(Method.java:525)
11-14 13:29:23.701: W/System.err(14386):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-14 13:29:23.711: W/System.err(14386):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-14 13:29:23.711: W/System.err(14386):    at dalvik.system.NativeStart.main(Native Method)
11-14 13:29:23.711: W/System.err(14386): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
11-14 13:29:23.711: W/System.err(14386):    at libcore.io.Posix.open(Native Method)
11-14 13:29:23.711: W/System.err(14386):    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
11-14 13:29:23.711: W/System.err(14386):    at java.io.File.createNewFile(File.java:941)
布赖恩斯

尝试改变

dir.mkdir();

dir.mkdirs();

也尝试只是通过dir而不是dir.getAbsolutePath()

编辑

另外,您也不想像这样合并文件路径。尝试:

File myFile = new File(Environment.getExternalStorageDirectory(), "dir/savings.csv");
if (!myFile.exists()) {
     myFile.mkdirs();
     myFile.createNewFile();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

记录未创建文件

来自分类Dev

Android从drawable创建文件

来自分类Dev

WebKit请求未创建文件

来自分类Dev

Bash脚本未创建文件

来自分类Dev

如何修复未创建文件

来自分类Dev

Android代码未创建文件。找不到这样的文件或目录错误

来自分类Dev

Android Studio无法创建文件

来自分类Dev

Android FileOutputStream不创建文件

来自分类Dev

正在创建文件,但数据未推送到文件中

来自分类Dev

Yeoman'yo webapp'运行,但目录中未创建文件

来自分类Dev

Github Action echo命令未创建文件

来自分类Dev

Microsoft图形未创建文件的嵌入链接

来自分类Dev

AJAX + PHP + HTML-PHP未创建文件

来自分类Dev

在 Unity MAC 版本中未创建文件

来自分类Dev

异步创建文件

来自分类常见问题

从ByteArrayOutputStream创建文件

来自分类Dev

创建文件参考

来自分类Dev

创建文件参考

来自分类Dev

创建文件python

来自分类Dev

C创建文件

来自分类Dev

创建文件的权限

来自分类Dev

Android:未创建SharedPreferences文件

来自分类Dev

无法创建文件夹“调试” Android Studio

来自分类Dev

Android,从输入流创建文件挂在while循环内

来自分类Dev

无法使用Xamarin在Android上创建文件

来自分类Dev

如何在Android的rootfolder中创建文件夹

来自分类Dev

无法在Android的外部存储上创建文件夹

来自分类Dev

在Android模拟器中创建文件夹

来自分类Dev

无法在Android 6.0.1上创建文件夹