我正在使用 swift 4 开发 iOS 的应用程序。
我需要将 ByteArray [Int8] 写入 applicationSupportDirectory 中的文件。 后来我需要在我的服务器上传文件来读取它并进行操作。 我的服务器在java平台上。
问题是,我必须在写入文件之前将ByteArray转换为数据(NSData)。但我的java服务器拒绝将其转换回 ByteArray [] 。
知道如何实现这个目标吗?
任何线索都会很棒。
编辑: 添加代码:
let newByteArray: [Int8] = [62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 61, 0, 114, 0, 61, 0, 114, 0]
let data = Data(bytes: newByteArray, count: newByteArray.count)
let file: FileHandle? = try FileHandle(forUpdating: url)
if file == nil {
print("Failed to open file handler")
} else {
file?.seekToEndOfFile()
file?.write(data)
file?.closeFile()
}
现在我不知道如何从文件中读取它并将其转换为原始输入。 另外如何使用java平台在我的服务器上读取文件。
很抱歉,如果这是一个愚蠢的问题,我对swift和iOS来说太新了。
答案 0 :(得分:0)
Swift中的Byte是一个UInt8对象。如果您有一个来自Java的Int8集合并希望将数据保存到磁盘,则需要先将其转换为字节[UInt8]
的集合:
let bytes: [UInt8] = [0, 127, 128, 255]
let toInt8 = bytes.map(Int8.init) // [0, 127, -128, -1]
let backToBytes = toInt8.map(UInt8.init) // [0, 127, 128, 255]
let data = Data(backToBytes)
在你的情况下
let newByteArray: [Int8] = [62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 61, 0, 114, 0, 61, 0, 114, 0]
let data = Data(newByteArray.map(UInt8.init))
print(Array(data)) // [62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 62, 0, 113, 0, 61, 0, 114, 0, 61, 0, 114, 0]
将Int8数组转换为数据后,您可以使用数据的写入方法将其保存到App Sandbox中的任何目录