首先什么是IO呢?IO就是Input和Output即输入输出。Java中将从能够发送字节序列的任何数据源取得输入和将输出发送到能够接收字节序列的任何目的地抽象为流的输入和输出。要注意这里说的输入是指从文件、网络连接或内存块中读取字节序列到程序中,输出是指从程序中流出到文件、网络连接或内存块中。
对流的类型可以从三个角度进行分类。
按数据流的方向不同可以分为输入流和输出流。(以程序的角度考虑)
按处理数据的单位不同分为字节流(以byte为单位8位)和字符流(16位)。
按功能的不同可以分为节点流和处理流。
下表中的是输入输出的抽象类,是不能进行实例化的。
以下的是上面抽象类比较常用的的子类,在实现父类方法的同时都定义了自身特有的功能。
FileInputStream/FileOutputStream//以File开头,节点流,用来操作文件,字节流。
FileReader\FileWriter //以File开头,处理流,用来操作文件,字符流。
BufferedInputStream/BufferedOutputStream//带缓冲的,处理流,字节流。
BufferedReader\BufferedWriter //带缓冲的,处理流,字符流。
不难看出以Stream结尾的是字节流,以Reader、Writer结尾的是字符流。
缓冲流要套接在相应的节点流上,将读写的数据先放在内存中进行缓存,提高了镀锡效率,同时扩展了一些方法。使用flush方法可以使内存中数据立刻写出。
处理流要套接在节点流或者处理流上,通过对数据的处理增强程序的读写功能。
举一部分例子:
用File创建文件
1.
import java.io.File;
import java.io.IOException;
public class IODemo1 {
public static void main(String[] args) throws IOException{
File f = null;
f = new File("f:"+File.separator+"demo.txt");//或写成("f:\\demo.txt")
System.out.println(f.createNewFile());//当不存在具有此抽象路径名指定名称的文件时,创建一个新的空文件。
System.out.println(f.getPath());//获取文件目录
System.out.println(f.isDirectory());//判断文件是否是一个目录
}
}
运行结果
2.
import java.io.File;
public class IODemo2 {
public static void main(String[] args){
File f = null;
f = new File("f:"+File.separator+"demo01.txt");
if(f.exists()){//如果文件存在则删除
f.delete();
}
else{
try{
System.out.println(f.createNewFile()+"文件已创建");//文件不存在则创建
}catch(Exception e){}
}
}
}
运行结果提示文件已创建。
3.
import java.io.File;
public class IODemo3 {
public static void main(String[] args){
File f = new File("F:");
File file[] = f.listFiles();//将F盘的文件和目录名存在数组中
for(int i=0;i<file.length;i++){
System.out.println(file[i]);
}
String str[] = f.list();//将F盘的文件存在数组中
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
}
}
额 F盘文件太多了,就不截图了哈,可以自己试一下!^_^
InputStream的例子:
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class IODemo8 {
public static void main(String[] args) {
File f = new File("e:" + File.separator + "demo.txt");// 要输入到的文件
InputStream input = null;
try {
input = new FileInputStream(f);
} catch (Exception e) {
}
byte b[] = new byte[9];
for (int i = 0; i < b.length; i++) {
try {
b[i] = (byte) input.read();
} catch (Exception e) {
}
}
try {
input.close();
} catch (Exception e) {
}
// 输出读入的内容
System.out.println(new String(b));
}
}
因为定义的数组长度是1024,所以后面跟了N多个空格。
FileInputStrea的例子:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class IODemo13 {
public static void main(String[] args){
int b=0;
FileInputStream in = null;
try{
in = new FileInputStream("e:"+File.separator+"demo1.txt");
}catch(FileNotFoundException e){
e.printStackTrace();
}
long num = 0;
try{
while((b=in.read())!=-1){//到文件尾得到-1,结束循环
System.out.print((char)b);
num++;
}
in.close();
}catch(IOException e){e.printStackTrace();}
System.out.println("共读取了"+num+"个字节");
}
}
Reader的例子:
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
public class IODemo11 {
public static void main(String[] args){
File f=new File("e:"+File.separator+"demo.txt");
Reader r =null;
try{
r = new FileReader(f);
}catch(Exception e){}
char c[] = new char[1024];
int count = 0;
try{
count = r.read(c);
}catch(Exception e){}
System.out.println(new String(c,0,count));
}
}
运行结果^_^
FileWriter的例子:
import java.io.File;
import java.io.FileWriter;
public class IODemo12 {
public static void main(String[] args){
File f =new File("e:"+File.separator+"demo02.txt");//要写入到的文件
FileWriter out = null;
try{
out = new FileWriter(f);
}catch(Exception e){}
try{
out.write("Hello fly—");//写入的内容
}catch(Exception e){}
try{
out.close();
}catch(Exception e){}
}
}
额 这个在E盘生成了一个文件demo02,里面有以句话Hello fly—。
BufferedReader的例子:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class IODemo17 {
public static void main(String[] args){
BufferedReader buf = null;
buf = new BufferedReader(new InputStreamReader(System.in));//从键盘获取输入的内容
String str = null;
System.out.print("请输入内容:");
try{str = buf.readLine();//读取输入的内容
buf.close();
}catch(Exception e){}
System.out.println("输入的内容:"+str);
}
}
就举这些例子吧!有错的请指出来哈^_^!