Java的I0主要包含三个部分:
1、流式部分一一IO的主体 部分。
2、非流式部分——主要包含一些辅助流式部分的类。
3、文件读取部分的与安全相关的类以及与本地操作系统相关
的文件系统的类。
Java中的流操作分为两种:
1、基于字节流(InputStream读取,OutputStream写入)。
2、基于字符流(Reader读取, Writer写入)。
Java I0流可以概括为:两个对应、一个桥梁。
两个对应指字节流( Byte Stream)和字符流(CharStream)的对应,输入流和输出流的对应。一个桥
梁指从字节流到字符流的桥梁。
Java中, 设计了四个抽象类来表示流:
1、InputStream,字节流,读取数据。
2、OutputStream,字节流,写入数据。
3、Reader,字符流,读取数据。
4、Writer, 字符流,写入数据。
其他多种多样变化的流均是继承了它们,并进行豪华
装饰派生出来的加强版,
而Java中的IO主要用来操纵文件或文件夹,在操纵文件之前可以使用代码来创建文件,具体代码实现如下:
package com.c.lesson1;
import java.io.File;
import java.io.IOException;
public class IO {
public static void main(String[] args) {
//实例化对象类,创建文件的位置以及名称
File f1=new File("d:\\aa.txt");
//当未定义文件的位置时,系统会默认创建到项目内部
File f2=new File("aa.txt");
//创建文件夹的位置
File f3=new File("d:\\aa");
//创建文件夹的位置
File f4=new File("d:\\aa\\aaa");
try {
//创建新文件的方法
boolean b1=f1.createNewFile();
boolean b2=f2.createNewFile();
//创建文件夹
boolean b3=f3.mkdir();
//创建子文件夹
boolean b4=f4.mkdirs();
//判断四个文件或文件是否都创建成功
if (b1&&b2&&b3&&b4) {
System.out.println("ok");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
默认创建到项目内部的文件在这:
在创建完文件后就可以读取写入文件了:
这个是字节流不带缓冲区的读取和写入
package com.c.lesson1;
/*
* 字节流不带缓冲区的读取流
* 和写入流
*/
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Byte {
public static void main(String[] args) {
FileInputStream fis=null;
FileOutputStream fos=null;
try {
//定义读取文件的位置(博主在此用了桌面上的视频文件)
fis=new FileInputStream("C:\\Users\\豪\\Desktop\\We.mp4");
//定义写入文件的位置
fos=new FileOutputStream("d:\\ss.mp4");
//定义一个数组用来定义每次写入的字节长度
byte[] b= new byte[10240];
//定义一个整形数据
int length;
try {
//定义的数据接受每次读取的值
//如果等于-1,表示文件读取完成
//循环读取
while ((length=fis.read(b))!=-1) {
//读取后写入
//读取一行写入一行
fos.write(b, 0, length);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
//关闭写入
fis.close();
//关闭读出
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
还有带缓冲区的字节读取写入流,不带缓冲区的字符读取写入流,带缓冲区的字符读取写入流
最重要的有个是字节流和字符流的转换
package com.c.lesson1;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
public class Byte_Character {
public static void main(String[] args) {
BufferedReader br = null;
BufferedWriter bw = null;
//实例化一个带缓冲区的字符读取对象
//读取的是控制台输入的字符
br=new BufferedReader(new InputStreamReader(System.in));
//打印请开始表演文字
System.out.println("请开始表演");
try {
//实例化一个带缓冲区的字符写入对象,并声明写入地址
bw=new BufferedWriter(new FileWriter("d:\\zx.tet"));
//定义一个空字符串
String tem="";
//空字符串用来接收读取的字符
while ((tem=br.readLine())!=null) {
//判断写入的字符是否是quit,如果是就停止循环
if (tem.equals("quit")) {
break;
}
//读取一行,打印一行
bw.write(tem);
//换行
bw.newLine();
}
//刷新缓冲区
bw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}