如何在Swift中读取/dev/random

如何在Swift中读取/dev/random,random,swift,Random,Swift,我很难找到一个如何在Swift中打开文件的示例,特别是从/dev/random中读取真正随机的数字到数组中。 谢谢要回答您关于读取文件的问题,您需要使用NSFileManager。Swift没有自己的文件API。此外,您不能简单地打开文件;您需要使用文件处理程序,因为/dev/random将永远保持输出 下面是一个例子: let manager = NSFileManager.defaultManager() let randomPath = "/dev/random" if manager.

我很难找到一个如何在Swift中打开文件的示例,特别是从/dev/random中读取真正随机的数字到数组中。
谢谢

要回答您关于读取文件的问题,您需要使用
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!)
        }
    }   
}
控制台输出示例:


出于完整性的考虑:您可以在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)
}

谢谢我在操场上工作,我得到了你得到的。
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)
}