android - Xamarin Android 下的文件编写器问题

标签 android xamarin filewriter

我正在尝试使用 Xamarin Android 写入文件。 这是我的代码:

 try
    {
    string r = (string)(DateFormat.Format("yyyy-MM-dd-hh-mm-ss", new Date()));
     string logFileBaseName = "drLog." + r; pause();


  mAccelLogFileWriter = new FileWriter(new File(STORAGE_DIR, logFileBaseName + ".accel.csv"));
  mStepLogFileWriter = new FileWriter(new File(STORAGE_DIR, logFileBaseName + ".steps.csv"));
  }
  catch (IOException e)
 {
 Log.Error(TAG, "Creating and opening log files failed!", e);
 e.PrintStackTrace();
   throw new RuntimeException(e);
 }

知道我定义了:

protected string STORAGE_DIR = SAMPLES_DIR + File.Separator + "dr";
 protected static readonly string SAMPLES_DIR = Android.OS.Environment.ExternalStorageDirectory + File.Separator + "samples_exp";

问题是我在创建文件 mAccelLogFileWriter 时遇到此异常。 这个异常(exception)说:

Java.Lang.RuntimeException: java.io.FileNotFoundException: /storage/emulated/0/samples_exp/dr/drLog.2016-07-21-09-22-59.accel.csv: open failed: ENOENT (No such file or directory)

当我调试代码时,我发现例如:SAMPLES_DIR="/storage/emulated/0/samples_exp" 当我尝试获取外部存储目录(SD 卡)时。

你能告诉我我的代码有什么问题吗?

最佳答案

在创建 Java.IO.FileWriter 之前,使用 Java.IO.File.Mkdirs 创建路径上的所有目录。

示例:

string SAMPLES_DIR = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.ToString(), "samples_exp");
string STORAGE_DIR = Path.Combine(SAMPLES_DIR, "dr");
var r = DateFormat.Format("yyyy-MM-dd-hh-mm-ss", new Java.Util.Date());
var logFileBaseName = "drLog." + r;
// ~~~~
var storageDirs = new Java.IO.File(STORAGE_DIR);
storageDirs.Mkdirs();
// ~~~~
var mAccelLogFileWriter = new Java.IO.FileWriter(new Java.IO.File(STORAGE_DIR, logFileBaseName + ".accel.csv"));
var mStepLogFileWriter = new Java.IO.FileWriter(new Java.IO.File(STORAGE_DIR, logFileBaseName + ".steps.csv"));

亚行输出:

adb shell ls -R  sdcard/samples_exp

sdcard/samples_exp:
dr

sdcard/samples_exp/dr:
drLog.2016-07-21-03-50-52.accel.csv
drLog.2016-07-21-03-50-52.steps.csv

关于android - Xamarin Android 下的文件编写器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38497740/

相关文章:

java - 在java中连续写入一行文本

android - 读入 Android 应用程序的 PKCS12/P12 客户端证书文件

c# - 系统异常 : 'Cannot create a table without columns, 是否具有公共(public)属性?

java - 为什么 java.io.Writer 的 write(..) 方法是同步的?

c# - 有人能解决这个问题吗?我无法连接到本地主机 "Xamarin" "C"

c# - Invalidate 不会导致 OnDraw

java - 尽管 while 循环中有条件,扫描仪输入仍附加到文本文件

java - 重启 Android Activity 后动画不显示

java - 我不希望我的应用在打开 URL 时出现在选择器对话框中

java - android Activity 切换不起作用