可可相当于Java';读者班

可可相当于Java';读者班,java,objective-c,cocoa,io,Java,Objective C,Cocoa,Io,在将Java程序移植到Cocoa时,我遇到了使用Java.io.Reader及其子类的程序。我对他们的工作不是很熟悉,所以我找不到好的替代者。有人对替换有什么好的建议吗?或者我必须重写它吗?Java中的读卡器只是块文件读取操作的“对象化”版本。在Objective C中,您可以访问C库。这就为您提供了一个用于逐块读取原始数据文件的函数。这不就是真正需要的吗 然后,例如,如果需要读取整数,只需将(void*)数据块强制转换为(int*) 你可以说Java阅读器更抽象。是的,有一些子类可以从任何地方

在将Java程序移植到Cocoa时,我遇到了使用Java.io.Reader及其子类的程序。我对他们的工作不是很熟悉,所以我找不到好的替代者。有人对替换有什么好的建议吗?或者我必须重写它吗?

Java中的读卡器只是块文件读取操作的“对象化”版本。在Objective C中,您可以访问C库。这就为您提供了一个用于逐块读取原始数据文件的函数。这不就是真正需要的吗

然后,例如,如果需要读取整数,只需将(void*)数据块强制转换为(int*)

你可以说Java阅读器更抽象。是的,有一些子类可以从任何地方读取内容,而不仅仅是文件。但是,如果您正在移植一个现有的程序,您已经知道数据源是否是文件。

Java中的读卡器只是块文件读取操作的“对象化”版本。在Objective C中,您可以访问C库。这就为您提供了一个用于逐块读取原始数据文件的函数。这不就是真正需要的吗

然后,例如,如果需要读取整数,只需将(void*)数据块强制转换为(int*)


你可以说Java阅读器更抽象。是的,有一些子类可以从任何地方读取内容,而不仅仅是文件。但是,如果您正在移植一个现有的程序,那么您已经知道数据源是否是文件。

我们大多数人对java.io.Reader的了解并不比您多,这意味着我们无法推荐一个等效的。你应该直接描述你想要什么;只有这样,我们才能推荐一些能提供它的东西。谢谢。我得仔细研究一下代码,看看他们是怎么用的。我希望尽可能少地修改他们的代码以避免bug,但这是没有办法的。@Peter Hosey-Java必须使用I/O结构:流和读卡器。流处理二进制数据,读卡器处理字符(unicode和编码)数据。与NSString一样,所有Java字符都是UTF-16。对于读卡器来说,打开一个文件并读取5个“字符”是很简单的,读卡器会为您完成所有的编码和解码。NSString并没有提供这些功能,而且在Apple框架中似乎也没有一组等效的库函数。@威尔·哈东:有NSString+stringWithContentsOfFile:method,尽管这只是一个遥远的关联。是的,这在处理大量文件时效果不太好。Mac OS缺少StreamDecoder类的整个概念。当你习惯了Java为这个问题提供的帮助时,你会感到非常沮丧。我们大多数人对Java.io.Reader的了解都不如你多,这意味着我们无法推荐一个等价的。你应该直接描述你想要什么;只有这样,我们才能推荐一些能提供它的东西。谢谢。我得仔细研究一下代码,看看他们是怎么用的。我希望尽可能少地修改他们的代码以避免bug,但这是没有办法的。@Peter Hosey-Java必须使用I/O结构:流和读卡器。流处理二进制数据,读卡器处理字符(unicode和编码)数据。与NSString一样,所有Java字符都是UTF-16。对于读卡器来说,打开一个文件并读取5个“字符”是很简单的,读卡器会为您完成所有的编码和解码。NSString并没有提供这些功能,而且在Apple框架中似乎也没有一组等效的库函数。@威尔·哈东:有NSString+stringWithContentsOfFile:method,尽管这只是一个遥远的关联。是的,这在处理大量文件时效果不太好。Mac OS缺少StreamDecoder类的整个概念。当你习惯了Java为这个问题提供的东西时,你会感到非常沮丧。Java的Reader类处理了处理多字节字符的困难。这并不是一次提取一个字节缓冲区,然后将它们转换为NSString那么简单。@TroyJ我认为NSString有initWithBytes:length:encoding:就是为了实现这一点。看看让一个方法在流媒体时有效运行需要做多少工作。读取器还处理流unicode前缀以自动检测编码。Reader和子类只是一组非常简单和强大的类。我真的很震惊,即使在第三方库中也没有类似的东西。@TroyJ好的,我没意识到你想从一个不完整的流中构建一个字符串。我没有立即看到这样的用例,但你是对的,这不容易做到。Java的Reader类处理使用多字节字符的困难。这并不是一次提取一个字节缓冲区,然后将它们转换为NSString那么简单。@TroyJ我认为NSString有initWithBytes:length:encoding:就是为了实现这一点。看看让一个方法在流媒体时有效运行需要做多少工作。读取器还处理流unicode前缀以自动检测编码。Reader和子类只是一组非常简单和强大的类。我真的很震惊,即使在第三方库中也没有类似的东西。@TroyJ好的,我没意识到你想从一个不完整的流中构建一个字符串。我没有立即看到这方面的用例,但你是对的,这不容易做到。