输入输出流
在这里,输入流是InputStream,输出流是OutputStream。
输入流
InputStream是字节输入流的抽象类,是所有字节输入流的父类,下面是对该类当中的一些方法的说明
read()方法:从输入流中读取数据的下一个字节,返回0~255的字节值。如果因为已经到达流末尾而没有可用的字节时,则返回-1。
read(byte[] b):这个方法是读入一个数组当中的内容。
close方法:关闭此输入流,并释放与流关联的所有系统资源。
输出流
OutputStream是输出流,完成对于文件的写入,该流的方法有以下几种
write(int b)方法:将指定的字节写入此输出流。
write(byte[] b)方法:将指定的字节写入该文件当中。
二者联系
总的来说,当你需要编译出一个文件当中内容的时候,你就需要通过File file=new File(“文件名”)创建这个文件,然后通过这个outputStream对文件进行写,之后再对这个文件当中的内容进行读,下面是对应的代码即编译情况:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class FileTest {
public static void main(String[] args) {
File file = new File("word.txt");
if (file.exists()) {
file.delete();
System.out.println("删除文件完毕");
} else {
try {
file.createNewFile();
System.out.println("文件已经创立");
} catch (Exception e) {
e.printStackTrace();
}
}
try{
FileOutputStream f1=new FileOutputStream(file);//这个是文件输出流,是用来写文件的
byte[] buy="我依然爱着王芯蕊".getBytes();//这个是获取byte类型的数组
f1.write(buy);//这个就是将数组当中的东西给写入文件当中
f1.close();
}catch(Exception e){
e.printStackTrace();
}
try{
FileInputStream f2=new FileInputStream(file);//这个FileInnputStream是用来读数据的
//接下来就是要让这个文件有一个极限的东西吧,也就是这个文件的最大存储的文字
byte[] b=new byte[1024];//这只是一个数组,但是它存储的数据大小是未知的,所以需要通过设置这个数组的最大值
int m=f2.read(b);
System.out.println("这个将要输出的字符串是"+new String(b,0,m));
}catch(Exception e)
{
e.printStackTrace();
}
}
}
FileReader和FileWriter
这两个类比FileInpuyStream和FileOutputStream更好用一些,因为他们可以更好地避免乱码的产生,接下来是二者的代码
import java.io.*;
public class FileTest {
public static void main(String[] args) {
File file = new File("word.txt");
if (file.exists()) {
file.delete();
System.out.println("删除文件完毕");
} else {
try {
file.createNewFile();
System.out.println("文件已经创立");
} catch (Exception e) {
e.printStackTrace();
}
}
try{
FileWriter f1=new FileWriter(file);//这个是文件输出流,是用来写文件的
String s="我依然爱你";
f1.write(s);//这个就是将数组当中的东西给写入文件当中
f1.close();
}catch(Exception e){
e.printStackTrace();
}
try{
FileReader f2=new FileReader(file);//这个FileInnputStream是用来读数据的
//接下来就是要让这个文件有一个极限的东西吧,也就是这个文件的最大存储的文字
char byt[]=new char[1024];//这只是一个数组,但是它存储的数据大小是未知的,所以需要通过设置这个数组的最大值
int len=f2.read(byt);
System.out.println("这个将要输出的字符串是"+new String(byt,0,len));
}catch(Exception e)
{
e.printStackTrace();
}
}
}
BufferedReader与BufferedWriter类
BufferedReader和BufferedWriter这两个类分别继承的是Reader类和Writer类,这两个类当中对应的东西就是相当于一个缓冲,就是说当我们输入进入文件的东西太多的话就需要设置这个缓冲进行输入
字符数据->BufferedWriter->OutputStreamWriter->outputStream->文件
BufferedReader类常用的方法如下:
read()方法:读取单个字符
readLine()方法:读取一个文本行,并将其返回为字符串。若无数据可读,则返回为null
BufferedWriter常用的方法如下:
write(String s,int off,int len)方法:写入字符串的某一部分。
flush():刷新该流的缓存。
newLine()方法:写入一个行分隔符。
好了,小伙伴们,这一期的更新博客就结束了,我是明怀,你知道的越多,你不知道的就越多。我们下期见!