首页 > 代码库 > IO-转换流

IO-转换流

java.net.URL类:类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针
构造方法:
  URL(String spec)根据 String 表示形式创建 URL 对象。
方法:
  openStream():打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。
需求:使用的流获取www.baidu.com的主页源码,并将源码在控制台输出

public class TestInputStreamReader {
    public static void main(String[] args) {
        try {
            URL url = new URL("http://www.baidu.com");
            InputStream ips = url.openStream();//开到此 URL 的连接并返回一个用于从该连接读入的 InputStream
            InputStreamReader isr = new InputStreamReader(ips,"UTF-8"); //将字节流按照指编码转换成一个字符流
            BufferedReader br = new BufferedReader(isr);
            String str;
            while((str=br.readLine())!=null){
                System.out.println(str);
            }
            br.close();
            isr.close();
            ips.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }
}

InputStream:字节输入流
Reader:字符输入流
转换流(处理流)
  InputStreamReader:将InputStream转换为Reader(将字节流转换为字符流),继承了Reader类
  构造函数:
    InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。
    InputStreamReader(InputStream in, Charset cs) 创建使用给定字符集的 InputStreamReader。
  字符集:
    UTF-8,GBK,GB2312....
  常用的方法:
    read() 读取单个字符。
    read(char[] cbuf, int offset, int length) 将字符读入数组中的某一部分。
    close():关闭该流并释放与之关联的所有资源。
BufferedReader:
  readLine();
InputStream--->InputStreamReader--->BufferedReader
OutputStreamWriter:OutputStream---->Writer

public class TestInputStreamReader2 {
    public static void main(String[] args) {
        try {
            InputStream ips = new FileInputStream("D:/aa.txt");//字节输入流
//            InputStreamReader isr = new InputStreamReader(ips);//将字节流转换为字符流
            InputStreamReader isr = new InputStreamReader(ips,"GBK");//将字节流转换为字符流
            BufferedReader br =  new BufferedReader(isr);
            String s;
            while((s=br.readLine())!=null){
                System.out.println(s);
            }
            br.close();
            isr.close();
            ips.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

获取当前开发环境下的编码集

public class TestEncoding {
    public static void main(String[] args) {
        //获取当前开发环境下的编码集
        String str = System.getProperty("file.encoding");
        System.out.println(str);
    }
}

 

IO-转换流