Java字节流和字符流学习和笔记——黑马训练营
2015-10-15 12:33
507 查看
-------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-------
Java API中,对数据的操作是通过流的方式,然而操作流数据分为:字节流和字符流
按流向分为:输出流和输入流
按照字符流分为:Reader、Writer(主要是操作纯文本文件)
按照字节流分为:字节输入流InputStream、和字节输出流OutputStream(非文本文件,比如:图片、音乐、视频....)
1.字节流操作图片
因为操作的是非纯文本文件,所以使用InputStreamOutpurStream中的FileInputStream、FileOutputStream对象操作图片文件
2.字符流操作文件
因为操作的是纯文本文件,所以使用Reader、Writer中的FileReader、FileWriter对象纯文本文件
3.关于Properties配置信息
Properties是Hashtable的子类
也就是说它具备Map集合的特点,而且它里面存储的键值对都是字符串,数据格式:键=值
是集合和IO技术相结合的集合容器
对象特点:可以用于键值对形式的配置文件
Java API中,对数据的操作是通过流的方式,然而操作流数据分为:字节流和字符流
按流向分为:输出流和输入流
按照字符流分为:Reader、Writer(主要是操作纯文本文件)
按照字节流分为:字节输入流InputStream、和字节输出流OutputStream(非文本文件,比如:图片、音乐、视频....)
1.字节流操作图片
//使用流复制非纯文本文件 // public static void main(String[] args) { FileInputStream fis =null; FileOutputStream fos=null; try { //字符输入流(需要copy文件源) fis =new FileInputStream("path路径源"); //字符输出流(copy存放的目的地) fos= new FileOutputStream("copy目的地"); //为了提高字符流缓冲技术,所以需要使用 //字符流缓冲区:BuffereInputStream BuffereInputStream BufferedInputStream bfis=new BufferedInputStream(fis); BufferedOutputStream bfos=new BufferedOutputStream(fos); //读取流数组为1024个字节 byte[] buf = new byte[1024]; int len = 0; //字节流判断读取数据是否读完,如果读完这返回-1 while ((len = bfis.read(buf)) != -1) { /*写到目的文件————>第一个参数:把数据写到缓存数组。 第二个参数:从0个字节开始写 第三个参数:写到文件末尾 */ bfos.write(buf, 0, len); } } catch (IOException e1) { //抛出异常 throw new RuntimeException("读取文件失败"); } finally { //在使用IO流的时候很容易产生IOException异常,所以每次用完流之后一定要close(); try { if(fis!=null){ fis.close(); } } catch (IOException e2) { throw new RuntimeException("关闭字节输入流失败"); } try { if(fos!=null){ fos.close(); } } catch (IOException e3) { throw new RuntimeException("关闭字节输出流失败"); } } }
因为操作的是非纯文本文件,所以使用InputStreamOutpurStream中的FileInputStream、FileOutputStream对象操作图片文件
2.字符流操作文件
public static void main(String[] args) { //使用流复制纯文本文件 // 因为操作的是纯文本文件,所以使用Reader、Writer中的FileReader、FileWriter对象纯文本文件 FileReader fir = null; FileWriter fiw = null; BufferedReader bufr = null; BufferedWriter bufw = null; try { // 字节读取流(需要copy文件源) fir = new FileReader("path路径源"); // 字节写入流(copy存放的目的地) fiw = new FileWriter("path路径目的地"); // 为了提高字符流缓冲技术,所以需要使用 // 字符流缓冲区:BufferedReader BufferedWriter bufr = new BufferedReader(fir); bufw = new BufferedWriter(fiw); // 读取流数组为1024个字节 byte[] buf = new byte[1024]; String len = null; // 字节流判断读取数据是否读完,如果读完这返回null while ((len = bufr.readLine()) != null) { //写到目的文件 bufw.write(len); } } catch (IOException e1) { // 抛出异常 throw new RuntimeException("读取文件失败"); } finally { // 在使用IO流的时候很容易产生IOException异常,所以每次用完流之后一定要close(); try { if (bufr != null) { bufr.close(); } } catch (Exception e2) { throw new RuntimeException("关闭字节输入流失败"); } try { if (bufw != null) { bufw.close(); } } catch (Exception e3) { throw new RuntimeException("关闭字节输出流失败"); } } }
因为操作的是纯文本文件,所以使用Reader、Writer中的FileReader、FileWriter对象纯文本文件
3.关于Properties配置信息
Properties是Hashtable的子类
也就是说它具备Map集合的特点,而且它里面存储的键值对都是字符串,数据格式:键=值
是集合和IO技术相结合的集合容器
对象特点:可以用于键值对形式的配置文件
//设置和获取元素 public static void main(String[] args) { //创建Properties对象并导包import java.util.Properties; Properties prop=new Properties(); //设置键值setProperty(键,值); prop.setProperty("zhangsan", "11"); prop.setProperty("lisi", "12"); //读取某个键的值 System.out.println(prop.getProperty("lisi")); // Set<String> names=prop.stringPropertyNames(); for(String s:names){ System.out.println(s+":"+prop.getProperty(s)); } }
相关文章推荐
- Java并发编程:Timer和TimerTask
- spring mvc 将页面string类型日期转换为后台Date日期
- Java中ModelAndView是做什么的?
- mac下 netbeans 8.02中文版设置代码自动补齐 + eclipse自动补齐
- spring aop的实现方式(二)
- java collection 类图
- spring @Configuration 和 @Bean
- 从头认识java-1.3 隐藏具体实现
- eclipse 条件断点
- 从头认识java-1.3 隐藏具体实现
- Java核心技术第6章(3)
- Java之旅(三)--- JSTL和EL表情
- Java 容器 彻底掌握
- HBase Java API类介绍
- 深入详解Struts2——struts2的配置文件
- myeclipse使用maven构建struts2项目详解
- myeclipse中maven项目打包过程
- java.lang.NoClassDefFoundError解决方法
- .net调java写的webService传过去的datetime,int等非string类型为null的问题
- 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获 3ff0