81.IO流java
IO(Input/Output):输入和输出,指的是某个设备或环境进行数据的输入或者输出。例如:键盘的输入,再好比显示器就是输出设备,输出图像。数组
对于java来讲输入输出问题,java将它抽象成流对象来解决。性能
以游戏程序为中心读取文件就是输入,写入文件是输出。spa
IO流在java中从输入输出角度分类:设计
1.输入流3d
2.输出流指针
IO流在java中从数据的角度来分类:对象
1.字符流blog
文本,咱们能读的懂的均可以认为是字符流。好比:文章,java文件等等游戏
2.字节流
二进制的数据,这种数据通常用文本打开咱们读不懂。好比,图片文件,mp3文件,等等。
82.字符流
文本,咱们能读的懂的均可以认为是字符流。好比:文章,java文件等等字符流
(1)字符输出流
字符输出流命名规则以Writer结尾
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class IOTest {
public static void main(String[] args) {
//建立一个文件
File file = new File("aa.txt");
//先建立一个输出为null
Writer writer=null;
////IO流是须要关闭的,若是不这样设计就不能关闭资源
try {
//在文件中写
writer = new FileWriter(file);
//写的内容是"HelloWorld!",每次修改都会自动覆盖上一次写的内容
writer.write("HelloWorld!");
} catch (IOException e) {
e.printStackTrace();
}finally {
//判断writer不是空防止空指针异常
if(writer!=null){
try {
//在关闭前会作flush刷新的事情
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; public class IOTest1 { public static void main(String[] args) { //先建立一个输出为null Writer writer=null; ////IO流是须要关闭的,若是不这样设计就不能关闭资源 try { //在新建的file文件中写 writer = new FileWriter(new File("bb.txt")); //写的内容是"HelloWorld!" writer.write("HelloWorld!"); } catch (IOException e) { e.printStackTrace(); }finally { //判断writer不是空防止空指针异常 if(writer!=null){ try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
追加
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; public class IOTest1 { public static void main(String[] args) { File file = new File("aa.txt"); //先建立一个输出为null Writer writer=null; ////IO流是须要关闭的,若是不这样设计就不能关闭资源 try { //在file文件中写,后面是true,表示再写的内容是追加不是覆盖 writer = new FileWriter(file,true); //写的内容是"HelloWorld!" writer.write("HelloWorld!"); } catch (IOException e) { e.printStackTrace(); }finally { //判断writer不是空防止空指针异常 if(writer!=null){ try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
换行:
输出换行
把文本写入文件中\n表明换行
问题是不一样的环境下换行的方式也不同
Windows: \r\n
Linux:\n
Mac:\r
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; public class IOTest2 { public static void main(String[] args) { //先建立一个输出为null Writer writer=null; ////IO流是须要关闭的,若是不这样设计就不能关闭资源 try { //在新建的file文件中写 writer = new FileWriter(new File("aa.txt"),true); for (int i = 0; i < 100; i++) { //写的内容是"HelloWorld!" /*把文本写入文件中\n表明换行 问题是不一样的环境下换行的方式也不同 Windows: \r\n Linux:\n Mac:\r */ writer.write("HelloWorld!\r\n"); ////每次写入10个helloworld的时候作一次flush if(i % 10 == 0){ writer.flush(); } } } catch (IOException e) { e.printStackTrace(); }finally { //判断writer不是空防止空指针异常 if(writer!=null){ try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
写入的五种方法
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; public class IOTest3 { public static void main(String[] args) { //先建立一个输出为null Writer writer=null; ////IO流是须要关闭的,若是不这样设计就不能关闭资源 try { //在新建的file文件中写 writer = new FileWriter(new File("bb.txt")); //写的内容是"HelloWorld!" writer.write("HelloWorld!"); //写入单个字符 writer.write(98);//b writer.write('A'); //写入字符数组 writer.write(new char[]{'l','o','v','e'}); //写入字符串的一部分 writer.write("现在这宋老三\t",2,3); //写入字符数组的一部分 writer.write(new char[]{'我','不','喜','欢','这','世','界','我','只','喜','欢','你'},0,7); } catch (IOException e) { e.printStackTrace(); }finally { //判断writer不是空防止空指针异常 if(writer!=null){ try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
(2)字符输入流
字符输出流命名规则以Reader结尾
单个字符读取
import java.io.*; public class ReaderTest { public static void main(String[] args) { //建立一个文件 File file = new File("aa.txt"); Reader reader=null; //建立一个输入流对象 try { reader=new FileReader(file); //这里read()出现的异常将下面catch (FileNotFoundException e)改为 catch (Exception e)就能够了 int read = -1; read=reader.read(); System.out.println((char)read); read=reader.read(); System.out.println((char)read); } catch (Exception e) { e.printStackTrace(); } finally { //关闭资源 if(reader!=null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.Reader; public class ReaderTest1 { public static void main(String[] args) { //建立一个文件 File file = new File("aa.txt"); Reader reader=null; //建立一个输入流对象 try { reader=new FileReader(file); //这里read()出现的异常将下面catch (FileNotFoundException e)改为 catch (Exception e)就能够了 int read = 0; //单个读取性能低 while ((read=reader.read())!=-1){ System.out.print((char)read); } } catch (Exception e) { e.printStackTrace(); } finally { //关闭资源 if(reader!=null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.util.Arrays; public class ReaderTest2 { public static void main(String[] args) { //建立一个文件 File file = new File("aa.txt"); Reader reader=null; //建立一个输入流对象 try { reader=new FileReader(file); //这里read()出现的异常将下面catch (FileNotFoundException e)改为 catch (Exception e)就能够了 char[] c=new char[12]; //向字符数组中添数据 int len = reader.read(c); System.out.println("读取的长度是"+len+" 读取的内容是"+ Arrays.toString(c)); len = reader.read(c); System.out.println("读取的长度是"+len+" 读取的内容是"+ Arrays.toString(c)); len = reader.read(c); System.out.println("读取的长度是"+len+" 读取的内容是"+ Arrays.toString(c)); } catch (Exception e) { e.printStackTrace(); } finally { //关闭资源 if(reader!=null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.Reader; public class ReaderTest3 { public static void main(String[] args) { //建立一个文件 File file = new File("aa.txt"); Reader reader=null; //建立一个输入流对象 try { reader=new FileReader(file); //这里read()出现的异常将下面catch (FileNotFoundException e)改为 catch (Exception e)就能够了 int len = 1; char[] c=new char[12]; while((len=reader.read(c))!=-1){ String str= String.valueOf(c,0,len); System.out.print(str); } } catch (Exception e) { e.printStackTrace(); } finally { //关闭资源 if(reader!=null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } } }