android - 无法在 android 5.1 上将文件写入内部存储
问题描述
我正在使用下面的代码来读取和写入文件到内部存储
@Throws(Exception::class)
fun readPageFromFile(storageDirectory: File, inputFilename: String): Any? {
val file = File(
storageDirectory.toString() +
File.separatorChar +
inputFilename
)
if (!file.exists())
return null
val inputStream: InputStream = FileInputStream(file)
val objectInputStream = ObjectInputStream(inputStream)
val any: Any? = objectInputStream.readObject()
inputStream.close()
return any
}
@Throws(IOException::class)
fun writePageToFile(
storageDirectory: File,
outputFilename: String,
any: Any
): Any {
val outputStream: OutputStream = FileOutputStream(
File(
storageDirectory.toString() +
File.separatorChar +
outputFilename
)
)
val objectOutputStream = ObjectOutputStream(outputStream)
objectOutputStream.writeObject(any)
outputStream.close()
return any
}
在 android 5.1 上objectOutputStream.writeObject
抛出NoClassDefFoundError: java.util.function.BiFunction
,因为操作系统没有这个类
java.lang.NoClassDefFoundError: java.util.function.BiFunction
at libcore.reflect.InternalNames.getClass(InternalNames.java:55)
at java.lang.Class.getDexCacheType(Class.java:479)
at java.lang.reflect.ArtMethod.getDexCacheType(ArtMethod.java:191)
at java.lang.reflect.ArtMethod.getParameterTypes(ArtMethod.java:136)
at java.lang.reflect.Method.getParameterTypes(Method.java:174)
at java.lang.Class.getDeclaredMethods(Class.java:772)
at java.io.ObjectStreamClass.computeSerialVersionUID(ObjectStreamClass.java:566)
at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:279)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1087)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1554)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360)
at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054)
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
at core.file.FileUtils.writePageToFile(FileUtils.kt:37)
我还可以使用什么其他替代方法?
解决方案
推荐阅读
- sql-server - 使用 Adventureworks2008R2 数据库更改输出格式
- node.js - 将http请求存储到变量,然后将单独的http请求传递给前端
- wordpress - 从 wordpress 中的列中删除填充
- java - java.lang.ArrayIndexOutOfBoundsException:-40
- javascript - JQuery:禁用多个
- javascript - 使用 VueJS 和 Bootstrap Tabs 的响应式砌体是否可能?
- javascript - 从 Google Chrome 开发者控制台调用 PrimeFaces
- python - python递归类型错误
- python - Python格式电话号码
- c++ - 究竟,“-fno-semantic-interposition”与“-fvisibility=protected”有何不同?