我要将一个音乐媒体文件的二进制数据转换成1010001这样的字符串写到一个文本文件中该怎么做?上面的代码只是做了一个复制的工作。
你的想法是将计算机存储的二进制数直接用文本文档打开,让我们能看到这些1010的二进制数。 首先在物理上文本文件和二进制文件并没有区别,都是以二进制01的形式存放于存储介质中,他们的区别只是逻辑上的区别,这两种方式只是在编码层次上有差别。文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)。你的一连串的二进制码,用不同的编码解析,就会产生不同的意识。这就是我们会看到乱码的原因。我们在打开一个文件时,用错了编码去解析。就会产生乱码。
其次,Java提供了很多进行文件输入输出的类,这些类可以分为文本I/O类和二进制I/O类。文本I/O将数据解释成字符的序列,二进制I/O将数据解释成原始的二进制数。文本在文件中如何存储依赖于文件的编码方式。Java对文本I/O提供自动编码与解码。在文本文件中存储的数据是以人能读懂的方式表示的,而在二进制文件中存储的数据是用二进制形式来表示的。人读不懂二进制文件,它们是为程序读取而设计的。例如,Java源程序存储在文本文件中,可以使用文本编辑器阅读,但是Java的类存储在二进制文件中,使用Java虚拟机阅读。二进制文件的好处是处理它们的效率比文本文件高。我们是看不到二进制数据的。就算我们看到一连串的10101数据也是编码解析过来的十进制数据。二进制数据是给计算机用的。我们所看到的数据都是经过计算机按某种规则解析后的数据。
所以我认为这个无法做到。你复制的这个MP3格式的文件,他也是按二进制存储的。但是他有他的解析方法,所以他就能产生声音。
|