黑马程序员——io流(二)字节流
2014-08-08 20:18
337 查看
-------
android培训、java培训、期待与您交流! ----------
操作文本数据使用字符流,操作非文本数据使用字节流。但是使用字节流的方法基本和字符流是一样
字节:是计算机最底层的储存容量和传输容量的一种计量单位。
输入流:InputStream。 打开指定文件:FileInputStream()
缓冲区:BufferedInputStream()
输出流:OutputStream。 输出到指定文件:FileOutputStream()
缓冲区:BufferedOutputStream()
拷贝一个系统的音频文件,到D盘
读取键盘录入:System.in :该方法是阻塞式方法。没有读到数据就会一直等到。
字节流转字符流:如果是纯文本数据的话,可以考虑使用该流,因为转成字符流之后,可以很方便的一次性读一行。InputStreamReader(构造方法中还能支持执行编码)
字符流转字节流:因为计算机存储的方式是为字节流的。所以必须将要输出的数据转成字节流才能进行传输和存储。OutputStreamWriter(构造方法中还能支持执行编码)
流的操作规律:
1、源:键盘录入 2、源:键盘(System.in)
3、源:文件
目:控制
目:文件 目:控制台(System.out)
流对象基本规律:
1、明确 源 和目的:源:InputStream Reader 目的:OutputStream
Writer
2、明确是否是纯文本:是 字符流 ,
不是 字节流
3、当体系明确后,在明确要使用哪个具体对象,通过设备来划分:
源:内存,文件,键盘(System.in)
目的:内存,文件,控制台(System.out)
File类:表示文件或目录,他的常用方法不涉及(IOException)
1、创建
①createNewFile():在指定路径创建文件,文件不存在就创建,有就放弃。
②mkdir():创建目录(只能创建一级目录)
③mkdirs():创建目录(允许创建多级)
2、删除
①boolean delete():删除文件
②deleteOnExit():当虚拟机退出后自动删除。
3、判断
①exists():判断目录或文件是否存在。
②isFile():判断是否是常规文件
③isDirectory():判断是否是目录
④isHidden():判断是否是隐藏文件
4、获取
①getName():返回文件或目录名
②getPath():返回路径,封装什么路径就返回什么路径
③getParent():返回绝对路径中的父目录,如果是相对路径返回null
④getAbsolutePath():不管封装的什么都是返回绝对路径
⑤long lastModified():返回最后一次修改时间
⑥long length():返回文件长度
⑦String[] list():返回一个目录的文件包含隐藏文件
⑧String[] list(过滤器):返回一个指定信息的文件
⑨File[] listFiles():方法同list()。但是返回File,更常用,因为封装成对象,我可以使用对象的方法。
练习:打印C盘下的所有文件(包含隐藏的)
io流和集合 想结合的类:持久的属性集Properties。
Properties属于Hashtable的子类,具备Map集合的特点,但是他里面存储的都是String,String。该对象的特点:可以用于键值对形式的配置文件。在加载数据时,需要数据有固定的格式。例如:键=值
使用load加载流,将配置文件读取到Properties集合中。
getProperty(key):通过键,查找值
list(输出流):将属性列表信息输出到指定的输出流。
load(输入流):从输入流中读取属性列表。
setProperty(键,值):修改和新建值。底层其实是put。
StringProperNames():返回 set<String> 键集合。
store(输出流:描述信息):将Properties 保存到文件,描述信息可为空
练习:制作一个用于应用程序运行次数,到次数就提示不能运行了。
android培训、java培训、期待与您交流! ----------
操作文本数据使用字符流,操作非文本数据使用字节流。但是使用字节流的方法基本和字符流是一样
字节:是计算机最底层的储存容量和传输容量的一种计量单位。
输入流:InputStream。 打开指定文件:FileInputStream()
缓冲区:BufferedInputStream()
输出流:OutputStream。 输出到指定文件:FileOutputStream()
缓冲区:BufferedOutputStream()
拷贝一个系统的音频文件,到D盘
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /**拷贝一个系统的音频文件,到D盘 * */ public class IOInputOutput { public static void main(String[] args) throws IOException { BufferedInputStream bufIns = new BufferedInputStream(new FileInputStream("C:/Windows/Media/town.mid")); BufferedOutputStream bufOuts = new BufferedOutputStream(new FileOutputStream("d:/copy_town.mid")); byte[] data = new byte[1024*10]; //定义字节缓冲区 int flag; while((flag=bufIns.read(data))!=-1) { bufOuts.write(data,0,flag); //写出字节缓冲区的有效数据 bufOuts.flush(); } bufIns.close(); bufOuts.close(); System.out.println("拷贝成功"); } }
读取键盘录入:System.in :该方法是阻塞式方法。没有读到数据就会一直等到。
字节流转字符流:如果是纯文本数据的话,可以考虑使用该流,因为转成字符流之后,可以很方便的一次性读一行。InputStreamReader(构造方法中还能支持执行编码)
字符流转字节流:因为计算机存储的方式是为字节流的。所以必须将要输出的数据转成字节流才能进行传输和存储。OutputStreamWriter(构造方法中还能支持执行编码)
流的操作规律:
1、源:键盘录入 2、源:键盘(System.in)
3、源:文件
目:控制
目:文件 目:控制台(System.out)
流对象基本规律:
1、明确 源 和目的:源:InputStream Reader 目的:OutputStream
Writer
2、明确是否是纯文本:是 字符流 ,
不是 字节流
3、当体系明确后,在明确要使用哪个具体对象,通过设备来划分:
源:内存,文件,键盘(System.in)
目的:内存,文件,控制台(System.out)
File类:表示文件或目录,他的常用方法不涉及(IOException)
1、创建
①createNewFile():在指定路径创建文件,文件不存在就创建,有就放弃。
②mkdir():创建目录(只能创建一级目录)
③mkdirs():创建目录(允许创建多级)
2、删除
①boolean delete():删除文件
②deleteOnExit():当虚拟机退出后自动删除。
3、判断
①exists():判断目录或文件是否存在。
②isFile():判断是否是常规文件
③isDirectory():判断是否是目录
④isHidden():判断是否是隐藏文件
4、获取
①getName():返回文件或目录名
②getPath():返回路径,封装什么路径就返回什么路径
③getParent():返回绝对路径中的父目录,如果是相对路径返回null
④getAbsolutePath():不管封装的什么都是返回绝对路径
⑤long lastModified():返回最后一次修改时间
⑥long length():返回文件长度
⑦String[] list():返回一个目录的文件包含隐藏文件
⑧String[] list(过滤器):返回一个指定信息的文件
⑨File[] listFiles():方法同list()。但是返回File,更常用,因为封装成对象,我可以使用对象的方法。
练习:打印C盘下的所有文件(包含隐藏的)
import java.io.File; public class IOFile { public static void main(String[] args) { printFile(new File("c:/")); } public static void printFile(File path) { if(!(path.exists())) throw new RuntimeException("目录错误"); File[] pathArr = path.listFiles();<span style="white-space:pre"> </span>//返回指定路径下的试图 for(File element : pathArr)<span style="white-space:pre"> </span>//遍历数组 { System.out.println(element.getAbsolutePath()); } } }
io流和集合 想结合的类:持久的属性集Properties。
Properties属于Hashtable的子类,具备Map集合的特点,但是他里面存储的都是String,String。该对象的特点:可以用于键值对形式的配置文件。在加载数据时,需要数据有固定的格式。例如:键=值
使用load加载流,将配置文件读取到Properties集合中。
getProperty(key):通过键,查找值
list(输出流):将属性列表信息输出到指定的输出流。
load(输入流):从输入流中读取属性列表。
setProperty(键,值):修改和新建值。底层其实是put。
StringProperNames():返回 set<String> 键集合。
store(输出流:描述信息):将Properties 保存到文件,描述信息可为空
练习:制作一个用于应用程序运行次数,到次数就提示不能运行了。
import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Properties; /**练习:制作一个用于应用程序运行次数,到次数就提示不能运行了。 * */ public class IOProperties { public static void main(String[] args) { File path = new File("C:/Windows/System32/Masai.properties"); Properties prop = new Properties(); try { prop.load(new FileReader(path)); //加载配置信息 } catch (IOException e) { try { path.createNewFile(); //如果抛异常,就进行第一次初始化,创建指定文件 Properties init = new Properties(); //创建另一个 集合 init.setProperty("count", "1"); //写入指定数据 init.store(new FileWriter(path), "ini"); //保存到文件 prop.load(new FileReader(path)); //初始化成功以后,在读取一次 } catch (IOException e1) { System.out.println("创建" + path + "失败"); } } int count = Integer.parseInt(prop.getProperty("count")); //通过key查询出value值,并将它转成 数字 if(count <= 5 ) { prop.setProperty("count", String.valueOf(++count)); try { prop.store(new FileWriter(path),"ini"); } catch (IOException e) { throw new RuntimeException("程序异常即将退出"); } System.out.println("运行成功"); } else { System.out.println("运行失败,请充值"); } } }
相关文章推荐
- 黑马程序员 io流中的字节流、字节缓冲流、转换流(重要)(毕向东)
- 黑马程序员--IO流之字节流
- 黑马程序员—IO流(上)字符流、字节流
- 黑马程序员__异常处理_File类_IO流之字节读写
- 黑马程序员——Java基础——IO流(下)之字节流
- 黑马程序员--IO流--字节流
- 黑马程序员——JAVA基础------IO流(四)----字节字符转换流和缓冲流
- 黑马程序员--java基础:File类和文件字节IO流
- 黑马程序员_IO流二(字符缓冲区,字节缓冲区,字节字符转换流)
- 黑马程序员--IO流之字节流
- 黑马程序员_Java_IO流_字节流
- 黑马程序员-8-java-IO流知识点串讲(2)-字节流及字节字符转换流
- 黑马程序员——IO流-字节流
- 黑马程序员——Java语言基础——07.IO流(1)字符流和字节流
- 黑马程序员_IO流之字节流
- 黑马程序员_IO流2_(字符缓冲区,字节缓冲区,字节字符转换流)
- 黑马程序员--java基础--io流
- 黑马程序员-IO流学习笔记-1
- 黑马程序员——IO流
- 黑马程序员_io流的理解