Java 发送附带CSV的电子邮件时未找到文件异常-Android Studio
我有一个收集加速计数据的应用程序,然后我希望将这些数据写入CSV文件并通过电子邮件发送给用户。尝试发送电子邮件时,会记录以下错误:Java 发送附带CSV的电子邮件时未找到文件异常-Android Studio,java,android,android-studio,filenotfoundexception,Java,Android,Android Studio,Filenotfoundexception,我有一个收集加速计数据的应用程序,然后我希望将这些数据写入CSV文件并通过电子邮件发送给用户。尝试发送电子邮件时,会记录以下错误: 6-20 17:09:00.550 3764-4558/? E/RequestController﹕ IOException java.io.FileNotFoundException: /data/data/com.htc.android.mail/app_mail/Download/Walk Data-20150620-170859.csv: open f
6-20 17:09:00.550 3764-4558/? E/RequestController﹕ IOException
java.io.FileNotFoundException: /data/data/com.htc.android.mail/app_mail/Download/Walk Data-20150620-170859.csv: open failed: ENOENT (No such file or directory)
at libcore.io.IoBridge.open(IoBridge.java:406)
at java.io.FileInputStream.<init>(FileInputStream.java:78)
at com.htc.android.mail.server.SmtpServer.includeAttach(SmtpServer.java:948)
at com.htc.android.mail.server.SmtpServer.issueBody(SmtpServer.java:347)
at com.htc.android.mail.server.SmtpServer.sendMail(SmtpServer.java:153)
at com.htc.android.mail.RequestController$SmtpThread.run(RequestController.java:2016)
Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
at libcore.io.Posix.open(Native Method)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
at libcore.io.IoBridge.open(IoBridge.java:390)
以下是收集加速计数据并将其存储在walkData字符串中的代码:
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
ArrayList<Float> enrolAcc = new ArrayList<>();
ArrayList<Float> authAcc = new ArrayList<>();
TextView textEnrol = (TextView) findViewById(R.id.textView);
if (choice == 1) {
mPreviousAcc = mCurrentAcc;
mCurrentAcc = (float) Math.sqrt((double) (x * x));
float delta = mCurrentAcc - mPreviousAcc;
mDiffAcc = mDiffAcc * 0.9f + delta;
if (enrolAcc.size() < 100) {
enrolAcc.add(x);
} else {
enrolAcc.remove(0);
enrolAcc.add(x);
}
walkData = enrolAcc.toString();
textEnrol.setText(walkData);
}
传感器更改时的公共无效(传感器事件){
float x=事件值[0];
ArrayList enrolAcc=新的ArrayList();
ArrayList authAcc=新的ArrayList();
TextView textEnrol=(TextView)findViewById(R.id.TextView);
如果(选项==1){
mPreviousAcc=mCurrentAcc;
mCurrentAcc=(float)Math.sqrt((double)(x*x));
浮动增量=mCurrentAcc-mPreviousAcc;
mDiffAcc=mDiffAcc*0.9f+增量;
如果(enrolAcc.size()<100){
enrolAcc.添加(x);
}否则{
enrolAcc.remove(0);
enrolAcc.添加(x);
}
walkData=enrolAcc.toString();
textEnrol.setText(walkData);
}
提前感谢您的帮助。因此,正如例外情况所说,它会尝试在
/data/data/com.htc.android.mail/app_mail/Download/
文件夹中查找文件。但文件不在那里。如果您想创建文件,可以尝试以下操作:
您正在忽略异常-您所做的只是
printStack
并继续。在每个catch
block-Log.d(“myApp”,例如toString())中添加下一行
然后查看日志-您将看到哪些异常首先发生并导致一连串问题您将文件放入特定于应用程序的内部内存中,因此邮件应用程序无法访问。使文件可读或放入外部内存中。如何执行此操作绿色应用程序?日志中显示文件名为:Walk Data-20150620-170859.csv,但在代码中您提到的文件名为Walk Data.csv。哪一个是正确的?我猜它是代码中的一个,也就是电子邮件中附加文件的名称。
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
ArrayList<Float> enrolAcc = new ArrayList<>();
ArrayList<Float> authAcc = new ArrayList<>();
TextView textEnrol = (TextView) findViewById(R.id.textView);
if (choice == 1) {
mPreviousAcc = mCurrentAcc;
mCurrentAcc = (float) Math.sqrt((double) (x * x));
float delta = mCurrentAcc - mPreviousAcc;
mDiffAcc = mDiffAcc * 0.9f + delta;
if (enrolAcc.size() < 100) {
enrolAcc.add(x);
} else {
enrolAcc.remove(0);
enrolAcc.add(x);
}
walkData = enrolAcc.toString();
textEnrol.setText(walkData);
}
File file = new File(/*filepath*/ + /*filename*/);
file.createNewFile();
if(file.exists())
{
// do something with it
}