java语言基础(81)——IO流概述、分类及基本使用
2017-07-23 21:21
721 查看
java操作流的对象都在io包下。
IO流的用途:用来处理设备之间的数据传输。
IO流的分类:
按流向分:
输入流(读取数据)
输出流(写数据)
按数据类型分:
字符流
字符输入流 Reader
字符输出流 Writer
字节流
字节输入流 InputStream
字节输出流 OutputStream
FileOutputStream(字节输出流)的使用:
FileInputStream(字节输入流)的使用:
字节缓冲区流(又称高效字节流)用法跟FileOutputStream FileInputStream类似,但效率更高:
BufferedOutputStream 高效字节输出流
BufferedInputStream 高效字节输入流
OutputStreamWriter 字符输出流
package Stream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class OutputStreamWriterDemo {
public static void main(String[] args) throws IOException {
OutputStreamWriter osw = new OutputStreamWriter(new
FileOutputStream("E:\\osw.txt"));
osw.write("我喜欢java");
osw.close();
}
}
InputStreamReader 字符输入流
package Stream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputStreamReaderDemo {
public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("E:\\osw.txt"));
// 读数据 方式一 一次读取一个字符
// int ch = 0;
// while((ch = isr.read())!=-1){
// System.out.print((char)ch);
// }
// 读数据 方式二 一次读取一个字符数组
char[] chs = new char[1024];
int len = 0;
while((len=isr.read(chs))!=-1){
System.out.print(new String(chs,0,len));
}
// 关闭资源
isr.close();
}
}
字符流的便捷操作类:FileWriter 和 FileReader
高效字符流:
BufferedWriter 字符缓冲输出流
BufferedReader 字符缓冲输入流
用法与字节缓冲流类似。
字符缓冲流的特殊功能:插入新行(newLine)和读取一行(readLine)
IO流的用途:用来处理设备之间的数据传输。
IO流的分类:
按流向分:
输入流(读取数据)
输出流(写数据)
按数据类型分:
字符流
字符输入流 Reader
字符输出流 Writer
字节流
字节输入流 InputStream
字节输出流 OutputStream
FileOutputStream(字节输出流)的使用:
package Stream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileOutputStreamDemo { public static void main(String[] args) { String s = "hello world"; FileOutputStream fos = null; try { // 如果文件不存在会自动创建 fos = new FileOutputStream("E:\\fos.txt"); // 追加写入 // FileOutputStream fos = new FileOutputStream("E:\\fos.txt",true); fos.write(s.getBytes()); // 换行符 windows \r\n linux \n Mac \r fos.write("\r\n".getBytes()); fos.write(s.getBytes()); // 为了让代码移植性更强, //我们用java给的方法智能获取系统换行符 fos.write(System.getProperty("line.separator").getBytes()); fos.write(s.getBytes()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ // 为了保证close一定可以执行所以放在finally中 if(fos!=null){ try { // 释放资源 fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
FileInputStream(字节输入流)的使用:
package Stream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class FileInputStreamDemo { public static void main(String[] args) { FileInputStream fis = null; try { fis = new FileInputStream("E:\\fos.txt"); // 一次读取一个字节数组 byte[] bys = new byte[1024]; int len = 0; while((len = fis.read(bys))!=-1){ System.out.print(new String(bys,0,len)); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(fis!=null){ try { fis.close(); } catch (IOException e) { e.printStackTrace(); } }} } }
字节缓冲区流(又称高效字节流)用法跟FileOutputStream FileInputStream类似,但效率更高:
BufferedOutputStream 高效字节输出流
package Stream; import java.io.BufferedOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class BufferedOutputStreamDemo { public static void main(String[] args) { BufferedOutputStream bos = null; try { bos = new BufferedOutputStream(new FileOutputStream("E:\\bos.txt")); bos.write("hello world hello java".getBytes()); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(bos!=null){ try { bos.close(); } catch (IOException e) { e.printStackTrace(); } }} } }
BufferedInputStream 高效字节输入流
package Stream; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class BufferedInputStreamDemo { public static void main(String[] args) { BufferedInputStream bis = null; try { bis = new BufferedInputStream(new FileInputStream("E:\\bos.txt")); byte[] bys = new byte[1024]; int len = 0; while((len = bis.read(bys))!=-1){ System.out.print(new String(bys,0,len)); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(bis!=null){ try { bis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
OutputStreamWriter 字符输出流
package Stream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class OutputStreamWriterDemo {
public static void main(String[] args) throws IOException {
OutputStreamWriter osw = new OutputStreamWriter(new
FileOutputStream("E:\\osw.txt"));
osw.write("我喜欢java");
osw.close();
}
}
InputStreamReader 字符输入流
package Stream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputStreamReaderDemo {
public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("E:\\osw.txt"));
// 读数据 方式一 一次读取一个字符
// int ch = 0;
// while((ch = isr.read())!=-1){
// System.out.print((char)ch);
// }
// 读数据 方式二 一次读取一个字符数组
char[] chs = new char[1024];
int len = 0;
while((len=isr.read(chs))!=-1){
System.out.print(new String(chs,0,len));
}
// 关闭资源
isr.close();
}
}
字符流的便捷操作类:FileWriter 和 FileReader
高效字符流:
BufferedWriter 字符缓冲输出流
BufferedReader 字符缓冲输入流
用法与字节缓冲流类似。
字符缓冲流的特殊功能:插入新行(newLine)和读取一行(readLine)
相关文章推荐
- Java语言基础{Java_se(02)}-字面量和常量-变量的基本定义和使用-Java表达式-数据类型和分类-基本数据类型的转换-算数运算符-赋值运算符-比较运算符-三元运算符-逻辑运算符
- java语言基础(46)——内部类概述及使用
- Java基础知识强化之集合框架笔记31:集合之泛型类的概述和基本使用
- java语言基础(57)——Arrays工具类的概述和使用
- java语言基础(3)——注释概述及其分类
- java语言基础(87)——Properties的概述与使用
- java语言基础(4)——常量的概述和使用
- Java语言基础(常量的概述和使用)
- java语言基础(71)——集合框架(增强for的概述和使用)
- Java基础知识强化之IO流笔记01:异常的概述和分类
- java基础知识之方法的概述及基本使用
- Java语言基础(常量的概述和使用)
- Java_基础—泛型概述和基本使用
- java语言基础(42)——package关键字概述和使用
- Java语言基础数据类型的概述和分类
- Java基础回顾--java IO流相关的类的分类和总结 3 【Java File类中list()、listFiles()的使用及区别,认识和使用匿名内部类】
- java语言基础(68)——集合框架(泛型概述和使用)
- 03.java语言基础-变量的定义和基本使用
- JAVA开发之 11-JAVA语言基础(注释概述及其分类)
- Java语言基础常量的概述和使用