Java基础--IO
2016-06-23 00:00
316 查看
摘要: IO流的基本操作
输入:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。
输出:将程序(内存)数据输出到磁盘、光盘等存储设备中
Java 的 IO 流主要包括输入、输出两种 IO 流,每种输入、输出流有可分为字节流和字符流两大类:
字节流以字节为单位来处理输入、输出操作
字符流以字符为单位来处理输入、输出操作
File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
int read(byte[] b)
int read(byte[] b, int off, int len)
int read(char [] c)
int read(char [] c, int off, int len)
程序中打开的文件 IO 资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显式关闭文件 IO 资源。
void write(byte write/int c)
void []/char[] buff)
void write(byte[]/char[] buff, int off, int len);
因为字符流直接以字符作为操作单位,所以 Writer 可以用字符串来替换字符数组,即以 String 对象作为参数
void write(String str);
void write(String str, int off, int len)
一、IO 概述
输入与输出:输入:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。
输出:将程序(内存)数据输出到磁盘、光盘等存储设备中
Java 的 IO 流主要包括输入、输出两种 IO 流,每种输入、输出流有可分为字节流和字符流两大类:
字节流以字节为单位来处理输入、输出操作
字符流以字符为单位来处理输入、输出操作
二、File 类
File 类代表与平台无关的文件和目录。File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
三、IO 流体系
四、InputStream & Reader
InputStream 和 Reader 是所有输入流的基类。1.InputStream(典型实现:FileInputStream)
int read()int read(byte[] b)
int read(byte[] b, int off, int len)
2.Reader(典型实现:FileReader):
int read()int read(char [] c)
int read(char [] c, int off, int len)
程序中打开的文件 IO 资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显式关闭文件 IO 资源。
五、OutputStream & Writer
OutputStream 和 Writer 也非常相似:void write(byte write/int c)
void []/char[] buff)
void write(byte[]/char[] buff, int off, int len);
因为字符流直接以字符作为操作单位,所以 Writer 可以用字符串来替换字符数组,即以 String 对象作为参数
void write(String str);
void write(String str, int off, int len)
六、 IO举例
import java.io.File; import java.io.FileReader; /** * 字符输入流 * * Reader 抽象类 * FileReader */ public class ReaderTest { public static void main(String[] args) { File file = new File("files\\text.txt"); //申明字符输入流 FileReader reader = null; try { //创建字符输入流 reader = new FileReader(file); //缓冲区 char [] buff = new char[100]; for(int i = reader.read(buff);i!=-1;i = reader.read(buff)){ //将字符转换成字符串 String info = new String(buff,0,i); System.out.print(info); } } catch (Exception e) { e.printStackTrace(); }finally{ try { if(reader!= null){ reader.close(); } } catch (Exception e2) { e2.printStackTrace(); } } } }
import java.io.File; import java.io.FileWriter; /** * 字符输出流 * * Writer * FileWriter */ public class WriterTest { public static void main(String[] args) { File file = new File("files\\noname.txt"); FileWriter writer = null; try { writer = new FileWriter(file); String info ="古剑奇谭网络版什么时候开测啊!"; writer.write(info);//直接写出字符串 writer.flush(); } catch (Exception e) { e.printStackTrace(); }finally{ try { if(writer!=null){ writer.close(); } } catch (Exception e2) { e2.printStackTrace(); } } } }
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; /** * 文件输入流 字节流 * * FileInputStream */ public class InpuStreamTest { public static void main(String[] args) { File file = new File("files\\test.txt"); //申明输入流 FileInputStream in = null; try { //创建输入流 输入流管道连接到了指定的文件 in = new FileInputStream(file); //创建缓冲区 byte [] buff = new byte[128]; //将数据读取到缓冲区中 read方法是将数据读取到指定的字节数组中,返回真实读取到的字节数.如果读到文件的末尾,会返回-1. for(int i = in.read(buff);i!=-1;i = in.read(buff)){ //将读取的数据转变成字符串 String info = new String(buff,0,i); System.out.print(info); } } catch (Exception e) { e.printStackTrace(); }finally{ try { in.close(); in = null; } catch (IOException e) { e.printStackTrace(); } } } }
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * 文件输出流 * * FileOutputStream */ public class OutputStreamTes { public static void main(String[] args) { File file = new File("files\\igeek.txt"); //申明文件输出流 FileOutputStream out = null; try { //创建文件输出流 out = new FileOutputStream(file,true); //true表示写入到文件中不会覆盖前面的数据 String str = "古剑奇谭"; byte [] buff = str.getBytes(); out.write(buff);//写出缓冲区的数据 out.flush(); } catch (Exception e) { e.printStackTrace(); }finally{ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } }
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; /** * 缓冲字符输入流 * * BufferedReader */ public class BuffReaderTest { public static void main(String[] args) { File file = new File("files\\test.txt"); FileReader reader = null;//申明字符流 BufferedReader bufReader = null;//申明缓冲字符流 try { //创建字符流 reader = new FileReader(file); //创建缓冲字符流 bufReader = new BufferedReader(reader); //读取数据 //按行读取 for(String str = bufReader.readLine();str!=null;str = bufReader.readLine()){ System.out.println(str); } } catch (Exception e) { e.printStackTrace(); }finally{ try { if(reader!=null) reader.close(); if(bufReader!=null) bufReader.close(); } catch (Exception e2) { e2.printStackTrace(); } } } }
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; /** * 缓冲字符输出流 * * BufferedWriter */ public class BufferWriterTest { public static void main(String[] args) { File file = new File("files\\test.txt"); FileWriter writer = null; BufferedWriter bufWriter = null; try { //创建流 writer = new FileWriter(file); bufWriter = new BufferedWriter(writer); bufWriter.write("古剑奇谭"); bufWriter.newLine(); bufWriter.write("到底什么时候开测?"); bufWriter.flush(); } catch (Exception e) { e.printStackTrace(); }finally{ try { if(writer != null){ writer.close(); } if(bufWriter!=null ){ bufWriter.close(); } } catch (Exception e2) { e2.printStackTrace(); } } } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树