文件和IO流
1.File类的对象创建和常用方法?
输入输出流是对计算机文件进行操作的java类库。【读写文件数据】
计算机中的文件是由2部分组成
文件的基本属性。【文件的名称,后缀名,修改日期,类型…】【java.io.File类】
文件中的数据。【输入输出流】
对文件的基本属性进行操作
在java中我们通过java.io.File类实现对文件的基本属性进行操作。
java.io.File类
定义:
public class File
extends Object
implements Serializable, Comparable
既然是一个类,那么在使用的时候就需要创建对象。
import java.io.File;
public class TestMain {
public static void main(String[] args) {
//java.io.File类
//构造方法
//File(String pathname) 通过String类型的文件的路径和名称创建一个文件对象
//pathname---需要创建的文件的路径和名称
String pathname="F:\\20191015\\test\\mytest.txt";
String path="F:/20191015/test/mytest.txt";
File file1=new File(pathname);
File file2=new File(path);
//File(String parent, String child) 通过String类型的文件的路径和String类型名称创建一个文件对象
//String parent---需要创建的文件的路径
//String child----需要创建的文件的名称
String parent="F:\\20191015\\test";
String child="mytest.txt";
File file3=new File(parent,child);
//File(File parent, String child) 通过File类型的文件的路径和String类型名称创建一个文件对象。
//File parent---需要创建的文件的路径
//String child----需要创建的文件的名称
String stringpath="F:\\20191015\\test";
File filepath=new File(stringpath);
String child1="mytest.txt";
File file4=new File(filepath,child1);
//创建出文件对象,并不会得到实际文件。
}
}
2.Io的划分与区别【字节流与字符流】
按照每一次读写数据的量:
字节流:每一次可以读/写,一个字节,8位2进制数据的量,由于所有的数据都可以转换成字节,因此字节流可以处理任何类型的数据【文本,图片,视频,音频…】
字符流:每一次可以读/写,一个字符,16位2进制数据的量,只能处理文本型数据【word文档,记事本文件】,不能处理图片,视频,音频这些类型的文件。
3.字节输入与字节输出流的类
按照数据的流向:
字节输出流【写出数据】
在java中表示字节输出流使用OutputStream类
OutputStream类是一个抽象类,不能通过new的方式创建对象,需要借助子类来创建对象。
OutputStream抽象类是字节输出流的顶级父类。
FileOutputStream类是OutputStream抽象类的子类。
FileOutputStream类能通过new的方式创建对象。
java.io. FileOutputStream
public class FileOutputStream extends OutputStream
构造方法摘要 | |
FileOutputStream(File file)通过File对象创建一个字节输出流。 参数:File file--指定数据输出位置 |
|
FileOutputStream(File file, boolean append) 通过File对象创建一个可以追加内容的字节输出流。 参数1:File file--指定数据输出位置 参数2:boolean append--指定是否追加 |
|
FileOutputStream(String name) 通过String对象创建一个字节输出流。 |
|
FileOutputStream(String name, boolean append) 通过String对象创建一个可以追加内容的字节输出流。 参数1:String name--指定数据输出位置 参数2:boolean append--指定是否追加 |
|
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class TestMain {
public static void main(String[] args) throws Exception{
//FileOutputStream的构造方法
//FileOutputStream(File file)通过File对象创建一个字节输出流。
//参数:File file--指定数据输出位置
File file1=new File("F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"file1.txt");
FileOutputStream out1=new FileOutputStream(file1);
OutputStream out2=new FileOutputStream(file1);
//FileOutputStream(File file, boolean append) 通过File对象创建一个可以追加内容的字节输出流。
//参数1:File file--指定数据输出位置
//参数2:boolean append--指定是否追加
File file2=new File("F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"file1.txt");
FileOutputStream out3=new FileOutputStream(file2,true);
OutputStream out4=new FileOutputStream(file2,true);
//FileOutputStream(String name) 通过String对象创建一个字节输出流。
//参数:String name--指定数据输出位置
String path1="F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"file1.txt";
FileOutputStream out5=new FileOutputStream(path1);
OutputStream out6=new FileOutputStream(path1);
//FileOutputStream(String name, boolean append) 通过String对象创建一个可以追加内容的字节输出流。
//参数1:String name--指定数据输出位置
//参数2:boolean append--指定是否追加
String path2="F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"file1.txt";
FileOutputStream out7=new FileOutputStream(path2,true);
OutputStream out8=new FileOutputStream(path2,true);
//只要创建出输出流对象,那么输出流就会自动去创建这个不存在的文件
}
}
通过输出流对象写出数据:
void | write(byte[] b)将字节数组中的所有数据全部写出到字节输出流中。 |
void | write(byte[] b, int off, int len) 将字节数组中的从off开始len个数据写出到字节输出流中。。 |
void | write(int b) 将一个字节的数据写出到字节输出流中。 |
void | close() 关闭字节输出流 |
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class TestMain {
public static void main(String[] args) throws Exception{
// void write(byte[] b)将字节数组中的所有数据全部写出到字节输出流中。
//定义一个需要被写出的数据
String info="world";
//创建字节输出流对象
//FileOutputStream(File file, boolean append) 通过File对象创建一个可以追加内容的字节输出流。
//参数1:File file--指定数据输出位置
//参数2:boolean append--指定是否追加
File file2=new File("F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"file1.txt");
FileOutputStream out3=new FileOutputStream(file2,true);
//OutputStream out4=new FileOutputStream(file2,true);
//将String转换成byte[]
byte bytearray[]=info.getBytes();
//调用写方法,写出数据
out3.write(bytearray);
//关闭字节输出流
out3.close();
}
}
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class TestMain {
public static void main(String[] args) throws Exception{
//void write(byte[] b, int off, int len)将字节数组中的从off开始len个数据写出到字节输出流中。。
//定义一个需要被写出的数据
String info="worldhello";
//创建字节输出流对象
//FileOutputStream(File file, boolean append) 通过File对象创建一个可以追加内容的字节输出流。
//参数1:File file--指定数据输出位置
//参数2:boolean append--指定是否追加
File file2=new File("F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"file1.txt");
FileOutputStream out3=new FileOutputStream(file2,true);
//OutputStream out4=new FileOutputStream(file2,true);
//将String转换成byte[]
byte bytearray[]=info.getBytes();
//调用写方法,写出数据
out3.write(bytearray,5,5);
//关闭字节输出流
out3.close();
}
}
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class TestMain {
public static void main(String[] args) throws Exception{
// void write(int b) 将一个字节的数据写出到字节输出流中。
//定义一个需要被写出的数据
String info="-world";
//创建字节输出流对象
//FileOutputStream(File file, boolean append) 通过File对象创建一个可以追加内容的字节输出流。
//参数1:File file--指定数据输出位置
//参数2:boolean append--指定是否追加
File file2=new File("F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"file1.txt");
FileOutputStream out3=new FileOutputStream(file2,true);
//OutputStream out4=new FileOutputStream(file2,true);
//将String转换成byte[]
byte bytearray[]=info.getBytes();
for(byte by:bytearray){
//调用写方法,写出数据
out3.write(by);
}
//关闭字节输出流
out3.close();
}
}
4.字符输入与字符输出流的类
在java中通过Writer类表示字符输出流。
Writer类是一个抽象类,不能通过new的方式构造对象,需要借助子类完成对象创建。
Writer这个抽象类是字符输出流的顶级父类
FileWriter类是Writer抽象类的子类。
java.io FileWriter
public class FileWriter extends OutputStreamWriter
OutputStreamWriter 继承了 Writer
FileWriter 简介继承 Writer
构造方法摘要 | |
FileWriter(File file) 通过File对象创建一个字符输出流对象。 File file---指定输出位置 |
|
FileWriter(File file, boolean append)通过File对象创建一个可以追加的字符输出流对象。 File file---指定输出位置 boolean append---指定是否追加 |
|
FileWriter(String fileName) 通过String对象创建一个字符输出流对象。 String fileName---指定输出位置。 |
|
FileWriter(String fileName, boolean append)通过String对象创建一个可以追加的字符输出流对象。 String fileName---指定输出位置 boolean append---指定是否追加 |
|
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class TestMain {
public static void main(String[] args) throws Exception{
//FileWriter构造方法
//FileWriter(File file) 通过File对象创建一个字符输出流对象。
//File file---指定输出位置
File file1=new File("F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"myfile.txt");
FileWriter writer1=new FileWriter(file1);
Writer writer2=new FileWriter(file1);
//FileWriter(File file, boolean append)通过File对象创建一个可以追加的字符输出流对象。
//File file---指定输出位置
//boolean append---指定是否追加
File file2=new File("F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"myfile.txt");
FileWriter writer3=new FileWriter(file2,true);
Writer writer4=new FileWriter(file2,true);
//FileWriter(String fileName) 通过String对象创建一个字符输出流对象。
//String fileName---指定输出位置。
String path1="F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"myfile.txt";
FileWriter writer5=new FileWriter(path1);
Writer writer6=new FileWriter(path1);
//FileWriter(String fileName, boolean append)通过String对象创建一个可以追加的字符输出流对象。
//String fileName---指定输出位置
//boolean append---指定是否追加
String path2="F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"myfile.txt";
FileWriter writer7=new FileWriter(path2,true);
Writer writer8=new FileWriter(path2,true);
}
}
字符输入流
在java中通过Reader类表示字符输入流。
Reader这个类是一个抽象类,不能new,需要子类。
Reader这个类是一个抽象类字符输入流的顶级父类。
FileReader类就是Reader类的子类。
java.io FileReader
public class FileReader extends InputStreamReader
InputStreamReader继承Reader类
FileReader间接继承Reader类
构造方法摘要 | |
FileReader(File file) 通过File对象创建一个字符输入流对象 |
|
FileReader(String fileName) 通过String对象创建一个字符输入流对象 |
|
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
public class TestMain {
public static void main(String[] args) throws Exception{
//FileReader 构造方法
//FileReader(File file) 通过File对象创建一个字符输入流对象
File file1=new File("F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"myfile.txt");
FileReader reader1=new FileReader(file1);
Reader reader2=new FileReader(file1);
//FileReader(String fileName) 通过String对象创建一个字符输入流对象
String path1="F:"+File.separator+"20191015"+File.separator+"test"+File.separator+"myfile.txt";
FileReader reader3=new FileReader(path1);
Reader reader4=new FileReader(path1);
}
}