我无法找到如何在Swift中打开文件的示例,特别是从/ dev / random读取真正的随机数到数组中。 感谢
答案 0 :(得分:2)
要回答有关阅读文件的问题,您需要使用NSFileManager
。 Swift没有自己的文件API。此外,您不能简单地打开文件;你需要使用文件处理程序,因为/dev/random
将永远输出。
以下是一个例子:
let manager = NSFileManager.defaultManager()
let randomPath = "/dev/random"
if manager.fileExistsAtPath(randomPath) {
let handle = NSFileHandle(forReadingAtPath: randomPath)
if let validHandle = handle {
let desiredLength = 256
// Warning: Instead of returning NSData?, this method throws an exception if there's an error. Consider adding additional error handling.
let fileData = validHandle.readDataOfLength(desiredLength)
let fileString = NSString(data: fileData, encoding: NSASCIIStringEncoding)
if (fileString != nil) {
println(fileString!)
}
}
}
控制台输出示例:
¬Ñ@< 4R-ÐÛÍäÓ - (*Âý3o÷ - »E2 @ AAX<øWýsñniâõãQüÕ£ÆsûÄÏþDÊU²OÑ9H)úûÓWhAóûoκfßpÍC%M¤ò«ÿ@' - gVüü]®%亚青{»J>一种©æ¨Zì¿¿Bþxû,«1'-£¾E¸Ju|`ëérßNeòWÙé-I#ê05¿ JF-EE«I =¤< 5E /p¨¾üæü5è«I%ãå.öŪ¿¯¨ôø+EeÅþUå5ì%ÿ¼pÕÊ:OD
那就是说,如果你的意图是在数组中加载随机数,你应该只使用arc4random_uniform()
,这将返回一个均匀分布的随机数:
var randomNumbers = [Int]()
for i in 1...10 {
randomNumbers.append(Int(arc4random_uniform(1000)))
}
println(randomNumbers)
示例输出:
[27,796,150,439,955,678,556,816,571,130]
答案 1 :(得分:1)
只是为了完整性:你可以在Swift中使用open / read / write / close,就像你在C中一样:
var array = [UInt8](count: 10, repeatedValue: 0)
let fd = open("/dev/random", O_RDONLY)
if fd != -1 {
read(fd, &array, UInt(sizeofValue(array) * array.count))
close(fd)
println(array)
}