IO流
输入:input
输出:output
流一:
Java的IO主要包含三个部分:
- 流式部分――IO的主体部分
- 非流式部分――主要包含一些辅助流式部分的类
- 文件读取部分的与安全相关的类以及与本地操作系统相关 的文件系统的类
流二
Java中的流操作分为两种
- 基于字节流(InputStream读取,OutputStream写入)
- 字符流(Reader读取,Writer写入)
Java IO流可以概括为:两个对应、一个桥梁。两个 对应指字节流(Byte Stream)和字符流(Char Stream)的对应,输入流和输出流的对应。一个桥梁指从字节流到字符流的桥梁。
流三
Java中,设计了四个抽象类来表示流:
- InputStream,字节流,读取数据
- OutputStream,字节流,写入数据
- Reader,字符流,读取数据
- Writer,字符流,写入数据
其他多种多样变化的流均是继承了它们,并进行豪华 装饰派生出来的加强版
File类
File类对象表示磁盘上的文件或目录。它提供了与平 台无关的方法来对磁盘上的文件或目录进行操作。
例如:
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) {
File file = new File("aa.txt");
File file1 = new File("d:/bb");
File file2 = new File("d:/aa/ee");
try {
boolean b1 = file.createNewFile();//创建txt文件
boolean b2 = file1.mkdir();//创建aa文件夹
boolean b3 = file2.mkdirs();//创建aa..bb文件夹
if(b1 && b2 && b3){
System.out.println("创建成功");
}else {
System.out.println("创建失败");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
创建成功
FileInputStream和FileOutputStream
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileInputDemo {
public static void main(String[] args) {
FileOutputStream fos = null;
FileInputStream fis = null;
try {
fis = new FileInputStream("d:/aa/4.jpg");
fos = new FileOutputStream("d:/bb/4.jpg");
byte[] b = new byte[1024];
int result = 0;
try {
while ((result = fis.read(b))!=-1){
fos.write(b,0,result);
}
}catch (IOException e){
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
try {
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这样就把d盘aa里面的4.jpg复制到了d盘bb里
BufferedReader和BufferedWriter
BufferedReader与BufferedWriter实现了自带缓冲区的字符流高效读写,其最小操作单元为一个字符(16位) ,同时,我们也可以自己指定缓冲区的大小,默认的缓冲区有8192个字符,通常情况下已经足够了。
import java.io.*;
import static java.lang.System.*;
public class InputStreamDemo {
public static void main(String[] args) {
BufferedWriter bw = null;
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(in));
try {
bw = new BufferedWriter(new FileWriter("d:/aa/1.txt"));
String temp = null;
while ((temp = br.readLine())!=null){
if(temp.equals("over")){
break;
}
bw.write(temp);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这样做的好处就是,可以减少对磁盘的 I/O动作,借以提高程序的效率
java字符集
在JVM内部,统一使用基于Unicode字符集的字符编码
public class EncodingDemo {
public static void main(String[] args) {
System.out.println(System.getProperty("file.encoding"));
//显示本机的编程语言
}
}