创建文件时出错

时间:2016-06-26 00:27:36

标签: java android filenotfoundexception fileoutputstream

type Test1 = {
    Date : DateTime
    Value : float
}

type Test2 = {
    Date1 :DateTime
    Value1 : float
    Date2 : DateTime
    Value2 : float
}

let rng = System.Random()
let rng2 = System.Random()
let rs = 
[| for i = 1 to 1000 do 
    let baseDay = DateTime(2016,1,1).AddDays(float i)
    let actualDay = baseDay.AddDays(float (rng2.Next(7))) 
    yield {Date = actualDay; Value = rng.NextDouble() }|]

[| for r in rs do
    let futureDay = r.Date.AddDays(float 4)
    let r2 =
        rs
        |> Array.filter (fun x -> x.Date > futureDay)
        |> Array.tryHead
    let nr =
        match r2 with
        | Some x -> Some {Date1 = r.Date;Value1 = r.Value; Date2=x.Date;Value2 = x.Value}
        | None -> None
    if nr.IsSome then yield nr.Value |]

java.io.FileNotFoundException:/ storage / sdcard0 / Android / data / ... 引起:android.system.ErrnoException:open failed:ENOENT(没有这样的文件或目录)

我在创建文件时遇到此错误。

2 个答案:

答案 0 :(得分:0)

所以,文件存在。然后发生这种情况:

if (file.exists()) {
    file.delete();
}

现在它不存在,所以你不能使用:

file.getPath();

相反,请使用:

FileOutputStream fos=new FileOutputStream(filePath);

答案 1 :(得分:0)

不确定您是否已经这样做了,但是您需要声明您的应用将写入清单中的外部存储(如果定位到apk版本23以上,您还需要请求用户接受这些权限在授予您的应用之前。)

在清单中的应用程序标记内添加此行:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如果定位SDK版本23+,您需要请求运行时权限,详见https://developer.android.com/training/permissions/requesting.html