您的位置:首页 > 编程语言 > Java开发

Java字节流和字符流学习和笔记——黑马训练营

2015-10-15 12:33 507 查看
-------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-------

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));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: