Bytearray与Intarray

时间:2015-12-24 08:01:39

标签: java

请帮助理解我的java基础知识

据我所知,bytes原语可以存储-127到127之间的值=因此只有Ascii值可以存储在字节原语或字节数组中。 我们通常将图像,音乐和音频文件存储在字节原语或字节数组中,因为这些文件包含介于-127到127之间的值。 无法在字节数组中存储Unicode值,因为这些值最多可达65536 -

  1. 为什么我们通常更喜欢将从文件中读取的字节存储到bytearray中?..为什么不将这些字节存入int数组?

  2. 我在word文档中有中文字符。 我使用inputstream(而不是读者类)来读取doc文件并复制它。将Inputstream读入字节数组,然后将其写入输出文件。 中文字符的值大于128,那么如何将它们存储在字节数组中?我以为我们应该只使用读者类(不是INPUTSTREAM)来读取具有UNICODE字符的word文档。

    final String file="E:\\Users\\17496382.WUDIP\\Desktop\\chin.doc";
    final String file1="E:\\Users\\17496382.WUDIP\\Desktop\\chin1.doc";
    
    InputStream inputStream = new FileInputStream(file); 
    OutputStream out = new FileOutputStream(file1);
    byte[] buffer = new byte[1024];
    
    int bytesRead;
    while((bytesRead = inputStream.read(buffer))!=-1) {
        out.write(buffer);
        System.out.println(Arrays.toString(buffer));
    }
    

1 个答案:

答案 0 :(得分:1)

  1. 因为文件总是字节。它们也可能是其他东西(例如各种编码中的字符),但它们总是字节。

  2. 编码用于将字符转换为一个或多个字节,允许字符集中包含超过255个字符。

  3. The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)