黑马程序员技术交流社区

标题: io流的乱码问题 [打印本页]

作者: Android37期WCC    时间: 2016-10-22 22:36
标题: io流的乱码问题
package com.heima.stream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo4_ArrayCopy {

        /**
         * @param args
         *
         * 定义小数组
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                //demo1();
                //demo2();
                FileInputStream fis = new FileInputStream("致青春.mp3");
                FileOutputStream fos = new FileOutputStream("copy.mp3");
               
                byte[] arr = new byte[1024 * 8];
                int len;
                while((len = fis.read(arr)) != -1) {                                //如果忘记加arr,返回的就不是读取的字节个数,而是字节的码表值
                        fos.write(arr,0,len);
                }
               
                fis.close();
                fos.close();
        }

        public static void demo2() throws FileNotFoundException, IOException {
                FileInputStream fis = new FileInputStream("xxx.txt");
                FileOutputStream fos = new FileOutputStream("yyy.txt");
               
                byte[] arr = new byte[2];
                int len;
                while((len = fis.read(arr)) != -1) {
                        fos.write(arr,0,len);
                }
               
                fis.close();
                fos.close();
        }

        public static void demo1() throws FileNotFoundException, IOException {
                FileInputStream fis = new FileInputStream("xxx.txt");
                byte[] arr = new byte[2];
                int a = fis.read(arr);                                                //将文件上的字节读取到字节数组中
               
                System.out.println(a);                                                //读到的有效字节个数
                for (byte b : arr) {                                                //第一次获取到文件上的a和b
                        System.out.println(b);
                }
                System.out.println("-----------------------");
                int c = fis.read(arr);
                System.out.println(c);
                for (byte b : arr) {
                        System.out.println(b);
                }
                fis.close();
        }

}
{:3_56:}
作者: beleveyourself    时间: 2016-10-22 22:59
你两端用的编码集不同,所以就乱码了





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2