黑马程序员——IO流(一)概述及分类
2015-04-28 23:06
357 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
IO概述及分类
问题:IO是什么,它有什么作用?IO: input Output
IO流:输入输出流
计算机底层,是二进制,计算机之间进行信息交换,传递的也是二进制。
通过IO流我们的计算机才可以进行信息交换。
输入和输出:
什么是输入?什么是输出?
Java中的IO流全都在java.io包下.(还有一个nio包)
关于java中IO流的分类
讲三种分法:
1. 按照流的流向来划分
a) 输入流 XxxxInputStream XxxReader
b) 输出流 XxxxoOutputStream XxxxWriter
2. 按照传输单位
流最底层操作的全是二进制。
a) 字节流----直接操作二进制 XxxxInputStream XxxOutputStream
b) 字符流----操作的是字符 XxxReader XxxWriter
3. 按照使用方式
a) 基本流 简单理解:可以直接对源或目的地操作(例如文件)
b) 复合流 它不能直接对源或目的地操作,它需要在包装一个基本流。
在java.io包下有四个类
InputStream
OutputStream
Reader
Wieter
以上四个类都是abstract类,它们是所有的IO流的基类(根类,父类)
IO基类概述
InputStream 字节输入流的超类OutputStream 字节输出流的超类
Reader 字符输入
Wieter 字符输出
注意一个规范:字节流都是以InputStream OutputStream结尾
字符流都是以 Reader Writer结尾
重点:
输入流:读操作
输出流:写操作
一个文件要将其内容读取出来:输入流 InputStream Reader
对于输入流来说:它一定会提供读取操作的方法 read方法
向一个文件中写入内容:输出流 OutputStream Writer
对于输出流来说:它一定会提供写操作的方法. Write方法
问题:怎样选择字节还是字符哪?
第一种分法:
如果操作的是文本文件:一般情况下使用字符流.
如果操作的是二进制文件:一般情况下使用字节流.
第二种分法:
只想做一个文件的复制,就是使用字节流.(文件下载)
FileOutputStream的构造方法
ackage cn.itcast.io; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; //关于文件操作的字节输出流 //问题:字节输入流 操作的单位---字节 输出流----写操作 //这个流的作用就是将字节信息写到一个文件中(目的地) //FileOutputStream //构造方法 //1. new FileOutputStream(String name) //2.new FileOutputStream(File file); //3.new FileOutputStream(String name,boolean append); //4.new FileOutputStream(File file,boolean append); public class FileOutputStreamDemo1 { public static void main(String[] args) throws IOException { demo3(); } // 演示 new FileOutputStreasm(String name); public static void demo1() throws IOException { FileOutputStream fos = new FileOutputStream("a.txt"); // 注意产生异常,抛出. // FileNotFoundException // 我使用的是a.txt这个相对路径,它的位置应该是day20工程下. // 如果我们指定的目的地,也就是那个文件,如果不存在,会自动创建. // 如果我们指定的目的地,也就是那个文件,存在,会覆盖。 fos.write('h'); // public void write(int b) fos.write('e'); fos.write('l'); fos.write('l'); fos.write('o'); // 问题:要向a.txt文件写出内容? a.txt文件在哪? a.txt文件是否存在? } // 演示 new FileOutputStreasm(File file); public static void demo2() throws IOException { File file = new File("a.txt"); FileOutputStream fos = new FileOutputStream(file); // 注意产生异常,抛出. fos.write('h'); fos.write('e'); fos.write('l'); fos.write('l'); fos.write('o'); } // 演示 new FileOutputStreasm(File file,boolean append); public static void demo3() throws IOException { File file = new File("a.txt"); FileOutputStream fos = new FileOutputStream(file, true); // 第二个参数是boolean类型的,如果为false,与不写一样,都会覆盖,如果为true,它会在文件的末尾进行追加操作,而不会覆盖. fos.write('h'); fos.write('e'); fos.write('l'); fos.write('l'); fos.write('o'); } }
FileOutputStream的三个write 方法
介绍一下关于FileOutputStream中三个重载的write方法public void write(int code) 一次写入一个字节,code值代表的是写入的字节信息码值,它只能写入int数据的后八位,前24位舍弃。
public void write(byte[] b) 一次写入b.length个字节
public void write(byte[] b ,int start,int len) 将b数组中从start开始的len个写入.
package cn.itcast.io; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileOutputStreamDemo3 { public static void main(String[] args) throws IOException { demo2(); } // 演示 write(byte[] b) public static void demo1() throws IOException { FileOutputStream fos = new FileOutputStream("a.txt"); // 抛出异常 // FileNotFoundException // 2.调用其write方法写信息 String s = "hello world"; byte[] b = s.getBytes(); // 转换成字节数组 fos.write(b); // 一次将b.length信息全部写入 // 3.关闭资源 fos.close(); } // 演示 write(byte[] b,int start,int len) public static void demo2() throws IOException { FileOutputStream fos = new FileOutputStream("a.txt"); // 抛出异常 // FileNotFoundException // 2.调用其write方法写信息 String s = "hello world"; byte[] b = s.getBytes(); // 转换成字节数组 fos.write(b, 6, 5); // 一次将b数组中从下标6开始的5个字节信息写入. // 3.关闭资源 fos.close(); } }
FileOutputStream写出数据实现换行和追加写入
从键盘信息,如果输入的不是exit,那么就将这个信息写入到一个指定文件中,并且,每一次输入的信息,都是单独一行.描述:程序运行,请输入信息:hello world 就会将hello world写入到一个文件中,并且是单独一行。
程序继续提示:请输入信息,如果输入的不是exit,就将信息一直写入,并且都是单独一行,直到输入exit结束.
package cn.itcast.io; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Scanner; //描述:程序运行,请输入信息:hello world 就会将hello world写入到一个文件中,并且是单独一行。 //程序继续提示:请输入信息,如果输入的不是exit,就将信息一直写入,并且都是单独一行,直到输入exit结束. //将信息写入到msg.txt文件中. //要求可以追加写入. //在java中怎样实现向文件中写入信息时换行 : windows:\r\n public class FileOutputStreamDemo4 { public static void main(String[] args) throws IOException { // 1.创建输出流 FileOutputStream fos = new FileOutputStream("src/msg.txt", true); //就可以追加写入 // 2.定义一个Scanner Scanner sc = new Scanner(System.in); // 3.从键盘接收 while (true) { System.out.println("请输入信息"); String line = sc.nextLine(); if ("exit".equalsIgnoreCase(line)) { // 不区分大小写 break; } // 4.将信息写入到文件中. byte[] b = (line + "\r\n").getBytes(); // 在信息后加上\r\n在得到byte[]。 fos.write(b); } // 5.关闭 fos.close(); } }
相关文章推荐
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- 黑马程序员_java入门_IO流_5(文件概述)
- 黑马程序员_IO流概述
- 黑马程序员-Java I/O流(一)-IO流概述、字符流、字节流、流操作规律
- 黑马程序员——Java基础——IO流笔记(IO流概述)
- 黑马程序员----IO流的概述和探讨
- 黑马程序员:IO流概述与FileWriter简单介绍
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流
- 黑马程序员--Java学习日记之复习总结(递归以及IO流概述)
- 黑马程序员--集合工具类、其他对象、IO流概述
- Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律 (黑马程序员)
- 黑马程序员——IO流1:概述
- 黑马程序员——io流的基本概况和分类
- 黑马程序员---IO流简单概述
- 黑马程序员——Java基础IO流概述、字符流、字节流、流操作规律、File类、Properties类、打印流、序列流
- IO流_异常的概述和分类
- 黑马程序员--IO流概述和方法应用
- 黑马程序员——Java IO流(一)之IO流概述、字符流、字节流等
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律