java中是通过文件流来进行读写文件的,由于java面向对象的特性,在java中有专门的对象来进行文件的读写操作,下面通过代码一一为大家展示。
通过FileReader和FileWriter进行文件的读写(以字符方式读写)
常用于读写文本文件的最方便的读写方式
import java.io.*;
public class Fileiotest {
public static void main(String[] args) throws IOException {
//创建一个File对象
File file = new File("aa.txt");
//如果该文件不存在则创建
if (!file.exists())
{
file.createNewFile();
}
//通过FileWriter对文件进行写操作,第二个参数为true进行追加写,默认为false
FileWriter fw = new FileWriter("aa.txt",false);
//写文件
fw.write("你好啊");
//释放资源
fw.close();
//通过FileReader对文件进行读操作
FileReader fr = new FileReader("aa.txt");
//创建一个char类型的数组接收读取到的内容
char[] chars = new char[1024];
//用于接收在文件中读到的有效内容的长度
int len;
//循环读取文件,当读到文件末尾时len=-1
while ((len=fr.read(chars))!=-1)
{
//从char数组头部开始将len个字符转为String对象
System.out.println(new String(chars,0,len));
}
//释放资源
fr.close();
}
}
通过FileInputStream和FileOutputStream进行文件的读写(以字节方式读写)
应用范围最为广泛的读写,可用来读写图片文件
import java.io.*;
public class Fileiotest {
public static void main(String[] args) throws IOException {
//创建一个File对象
File file = new File("aa.txt");
//如果该文件不存在则创建
if (!file.exists())
{
file.createNewFile();
}
//通过 FileOutputStream对文件进行写操作,第二个参数为true进行追加写,默认为false
FileOutputStream fw = new FileOutputStream("aa.txt");
//写文件
fw.write("你好啊".getBytes());
//释放资源
fw.close();
//通过FileInputStream对文件进行读操作
FileInputStream fr = new FileInputStream("aa.txt");
//创建一个byte类型的数组接收读取到的内容
byte[] bytes = new byte[1024];
//用于接收在文件中读到的有效内容的长度
int len;
//循环读取文件,当读到文件末尾时len=-1
while ((len=fr.read(bytes))!=-1)
{
//从bytes数组头部开始将len个字符转为String对象
System.out.println(new String(bytes,0,len));
}
//释放资源
fr.close();
}
}
通过BufferedInputStream和BufferedOutputStream加快文件读写的速度
利用缓冲流加快字节流读写,同理有BufferedReader和BufferedWriter来加快字符流读写的速度。
import java.io.*;
public class Fileiotest {
public static void main(String[] args) throws IOException {
//创建一个File对象
File file = new File("aa.txt");
//如果该文件不存在则创建
if (!file.exists())
{
file.createNewFile();
}
//通过BufferedOutputStream加快写文件的速度
BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream("aa.txt"));
//写文件
bw.write("你好啊".getBytes());
//释放资源
bw.close();
//通过BufferedInputStream加快读取文件的速度
BufferedInputStream br = new BufferedInputStream(new FileInputStream("aa.txt"));
//创建一个byte类型的数组接收读取到的内容
byte[] bytes = new byte[1024];
//用于接收在文件中读到的有效内容的长度
int len;
//循环读取文件,当读到文件末尾时len=-1
while ((len=br.read(bytes))!=-1)
{
//从bytes数组头部开始将len个字符转为String对象
System.out.println(new String(bytes,0,len));
}
//释放资源
br.close();
}
}
通过InputStreamReader和OutputStreamWriter读写文件
可以以指定的编码方式进行读写,以字符流读写。
import java.io.*;
public class Fileiotest {
public static void main(String[] args) throws IOException {
//创建一个File对象
File file = new File("aa.txt");
//如果该文件不存在则创建
if (!file.exists())
{
file.createNewFile();
}
//通过OutputStreamWriter指定编码方式写文件
OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("aa.txt"), "gbk");
//写文件
ow.write("你好啊");
//释放资源
ow.close();
//通过InputStreamReader指定编码读文件
InputStreamReader ir = new InputStreamReader(new FileInputStream("aa.txt"),"gbk");
//创建一个char类型的数组接收读取到的内容
char[] chars = new char[1024];
//用于接收在文件中读到的有效内容的长度
int len;
//循环读取文件,当读到文件末尾时len=-1
while ((len=ir.read(chars))!=-1)
{
//从chars数组头部开始将len个字符转为String对象
System.out.println(new String(chars,0,len));
}
//释放资源
ir.close();
}
}
打印流
如果只是单纯的写文件可以通过打印流重定向进行写文件,写完后再将打印流定向到控制台。
import java.io.*;
public class Fileiotest {
public static void main(String[] args) throws IOException {
System.out.println("控制台打印");
//保存控制台打印流
PrintStream pr = System.out;
//将输出重定向到文件中,如果该文件不存在则会自动创建
System.setOut(new PrintStream("aaa.txt"));
System.out.println("输出重定向到文件");
//重新回到控制台输出的两种方式
//System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
System.setOut(pr);
System.out.println("又重定向到控制台");
}
}
java的各种读写文件的方式已经给大家介绍完毕了,java中还有各种各样的流对象,这里就不详细介绍了,今天的分享就到这里了,欢迎关注,一起进步~