javaIO即java的输入输出系统,其实不论哪种编程语言平时难免会经常遇到和输入输出媒介打交道,其实自己对javaIO里面的各种类看过后也是头大,内容比较多,但细细看过之后其实都存在这一定的规律,由于能力暂且有限,怕说深了误导,在这里只简单的说下常用的javaIO。
javaIO 从两个维度去了解 1.流类型:字节流(InputStream,OutputStream),字符流(Reader,Writer) 2.读写类型:输入流(InputStream,Reader),输出流(OutputStream,Writer);以上看到的InputStream ,OutputStream,Reader,Writer这四个类是javaIO的抽象类,很多具体的操作类都继承这四个抽象类。请看下图:
下面简单说下几个常用javaIO的基本用法:
1.字节流(InputStream,OutputStream)平时根据操作的媒介不同,选用相应的子类来进行操作例如下面来操作一下文件
emp1.用字节流写文件:
import java.io.OutputStream;
public class FIleIo {
public static void main(String [] args) throws IOException{
String aString=new String("Hello javaIO!");
//将字符串转为字节码放入数组中
byte[] b=aString.getBytes();
//磁盘总建一个文本文件
File file =new File("F:\\Io.txt");
//创建文本文件file的输出字节流的对象
OutputStream outputStream=new FileOutputStream(file);
try {
//将数组字节码写入输出字节流对象,至此结束,磁盘上将出现一个带有所写入内容的文本文件
outputStream.write(b);
} catch (IOException e) {
e.printStackTrace();
}
}
}
emp2.用字节流读文件:
package com.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class FIleIo {
public static void main(String[] args) throws IOException {
//将磁盘中的文本文件创建作为file对象
File file = new File("F:\\Io.text");
//将file对象转换为一个字节码数组对象
byte[] bArray = new byte[(int) file.length()];
//创建file文件对象的的输入字节流
InputStream iStream = new FileInputStream(file);
//读取文件字节流对象的大小
int size = iStream.read(bArray);
//输出读取信息
System.out.println("大小:" + size + ";内容:" + new String(bArray));
iStream.close();
}
}
2.字符流(Reader,Writer)以下例子同样是对一个文件进行操作,你会发现基本很相似:
emp3.用字符流写文件:
package com.test;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class FIleIo {
public static void main(String[] args) throws IOException{
String sr=new String("Hello IOfile1");
//在磁盘上创建一个file的文本文件对象
File file=new File("F:\\Iofile1.txt");
//直接创建一个文件的字符输出流对象
Writer wr=new FileWriter(file);
wr.write(sr);
wr.close();
}
}
emp4.用字符流读文件:
package com.test;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class FIleIo {
public static void main(String[] args) throws IOException {
File file = new File("F:\\Iofile1.txt");
// 将文件对象转换为字符数组
char[] chArray = new char[(int) file.length()];
Reader re = new FileReader(file);
int size = re.read(chArray);
System.out.println("大小是:" + size + "内容是:" + new String(chArray));
}
}
emp5.字节流转换为字符流
package com.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
public class FIleIo {
public static void main(String[] args) throws IOException {
File file=new File("F:\\Iofile1.txt");
InputStream inputStream=new FileInputStream(file);
Reader reader=new InputStreamReader(inputStream);
char[] chaArray=new char[(int)file.length()];
int size=reader.read(chaArray);
System.out.println("大小是:"+size+"内容是:"+new String(chaArray));
}
}
3.将装饰的字节字符流BufferReader,BufferWriter和BufferInputStream和BufferOutputStream 将上一个buffer装饰速度快些
emp6.用BufferReader去读文件
package com.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
public class FIleIo {
public static void main(String[] args) throws IOException {
File file=new File("F:\\Iofile1.txt");
Reader reader=new BufferedReader(new FileReader(file),1024*2);
char[] chaArray=new char[(int)file.length()];
int size=reader.read(chaArray);
System.out.println("大小是:"+size+"内容是:"+new String(chaArray));
}
}
以上文章内容基本是参考下面这位博主的,他总结的很全面,很好。接下来继续深入学习!
https://blog.csdn.net/suifeng3051/article/details/48344587