小白学IO,你学废了吗
作者:互联网
文章目录
IO
一,File类
File类是以抽象的方式代表文件名和目录路径名,主要用于 文件和目录的创建、查找和删除等。
File对象代表磁盘中实际存在的文件和目录。
常用方法
方法名 | 描述 |
---|---|
String getName() | 获取文件(夹)名 |
String getPath() | 获取文件(夹)路径 |
boolean exists() | 文件(夹)是否存在 |
boolean isFile() | 是否是一个文件 |
boolean isDirectory() | 是否是一个目录(文件夹) |
boolean createNewFile() | 创建一个文件 |
boolean mkdir() | 创建一个具体的文件夹 |
boolean mkdirs() | 创建多级文件夹 |
boolean delete() | 删除某个文件(夹) |
String [] list() | 返回某个文件夹下的所有文件(夹)名 |
File [] listFiles() | 获取某个文件夹下所有的文件(夹) |
使用步骤
//常用构造方法
new File(File parent,String child);
new File(String parent,String child);
new File(String pathName);
public void test() throws IOException {
//方式一:一个完整路径
//文件夹或 目录
File f1 = new File("D:\\IdeaWork\\day16-java\\src\\file");
//文件
File f2 = new File("D:\\IdeaWork\\day16-java\\src\\file/Hello.java");
//方式二:父路径和子路径
File f3 = new File("D:\\IdeaWork\\day16-java\\src\\", "file");
File f4 = new File("D:\\", "IdeaWork\\day16-java\\src\\file");
//方式三:File对象,子文件名
File f5 = new File("D:\\IdeaWork\\day16-java\\src\\");
File f6 = new File(f5, "file");
File f7 = new File(f5, "file/Hello.java");
System.out.println(f1.getName());//获取文件(夹)名
System.out.println(f1.getPath());//获取文件(夹)路径
System.out.println(f1.exists());//判断文件是否存在
System.out.println(f2.isFile());//判断是一个文件
System.out.println(f1.isDirectory());//是否是一个目录(文件夹)
File f8 = new File(f5, "com");
if (!f8.exists()){
f8.mkdir();//创建一个具体的文件夹 mkdirs是创建多级文件夹
}
System.out.println(f8.exists());
File f9 = new File(f8, "hello");
if (!f9.exists()){
f9.createNewFile();//创建一个文件
}
System.out.println(f8.exists());
System.out.println(f9.delete());
//循环输出jdk的目录
File fl = new File("C:\\Program Files\\Java\\jdk1.8.0_251");
File[] fl1 = fl.listFiles();
for (File file : fl1) {
System.out.println(file.getName());
}
}
@Test//递归输出D盘作业文件夹下的所有文件,以及子文件夹中所有的文件
public void test1(){
File f = new File("D:\\作业");
showFile(f);
}
public void showFile(File f){
if (f.isDirectory()){//文件夹
System.out.println(f.getName()+":是一个文件夹");
File[] files = f.listFiles();
for (File file : files) {
showFile(file);
}
}else {//文件
System.out.println(f.getName()+":是一个文件");
}
}
二,字节流
字节输入流
//构造方法
new FileInputStream(String文件路径);
new FileInputStream(File文件对象);
使用步骤:
1.创建输入流流对象
2.调用read方法
3.关闭流对象
read方法:从字节输入流中读取数据
//无参,返回一个字节,表示读取一个字节数据
int read()
//传入一个字节数组,表示将读到的字节存入数组中,返回存入的字节个数
int read(byte[] bytes)
//传入一个字节数组,数组下标,存放个数,表示将读到的字节存入数组,从数组的第off+1个元素开始存放,共存放len个。返回实际存入的字节个数。
int read(byte[] b,int off,int len)
//常用方法
//返回字节输入流中还有多少个可以读取的字节个数
int available();
@Test//字节输入流
public void test() throws Exception {
//1.创建流对象
FileInputStream f = new FileInputStream("C:\\Users\\admin\\Desktop/a.txt");
System.out.println(f.available());//返回流中剩余可读字节个数
//2.调用read方法--从文件流f中读取数据
//读取多个字节--存入字节数组
byte [] b=new byte[100];
f.read(b);
System.out.println(Arrays.toString(b));
//读取多个字节,有个数限制
// f.read(b,3,3);
//System.out.println(Arrays.toString(b));
//int r = f.read();//读取一个字节
//System.out.println(r);
}
字节输入流
构造方法
new FileOutputStream(String);
new FileOutputStream(String,Boolean);
new FileOutputStream(File);
new FileOutputStream(File,Boolean);
使用步骤
1.创建输出流对象
2.调用write方法
3.关闭流对象
//write方法:向字节输出流中写入数据
//写入一个字节数据b
void write(int b);
//将字节数组b写入输出流中
void write(byte[] b);
//从字节数组b的第off+1个元素开始,向输出流中写入len个字节
void write(byte[] b,int off,int len);
@Test//字节输出流
public void test1() throws Exception {
File f = new File("C:\\Users\\admin\\Desktop/b.txt");
//1.创建流对象
FileOutputStream fos = new FileOutputStream(f);
//2。调用write方法
byte [] b={97,97,97,98};
fos.write(b,1,3);
//3.关闭流对象
fos.close();
}
@Test//字节输出流案例
public void test2() throws Exception {
FileOutputStream f = new FileOutputStream("C:\\Users\\admin\\Desktop/c.txt");
String s = "I know,I'm not good enough,but I'm the only one in the world.Please cherish it.";
byte [] bytes=s.getBytes();
f.write(bytes);
//复制 先写输入流 然后输入到数组 在写输出流 输出到、
FileInputStream f1 = new FileInputStream("C:\\Users\\admin\\Desktop/c.txt");
FileOutputStream f2 = new FileOutputStream("C:\\Users\\admin\\Desktop/b.txt");
/*System.out.println(f1.available());
byte [] b=new byte[100];
f1.read(b);
f2.write(b);*/
int b = 0;//b表示读到的字节内容,如果读完了,返回-1
while ((b = f1.read())!=-1){
f2.write(b);
}
}
带缓冲区字节输入流和输出流
BufferedInputStream
BufferedOutputStream
@Test
public void test() throws Exception {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\Users\\admin\\Desktop/a.txt"));
bos.write("hello".getBytes());
bos.flush();//冲洗缓冲区
bos.close();//关闭,有冲洗缓冲区功能
}
三,字符流
字符输入流
构造方法
new FileReader(String);
new FileReader(File);
使用步骤
1.构建流对象
2.调用read方法
3.关闭流对象
//read方法:从字符输入流中读取字符数据
//读取一个字符,并返回读到的字符,如果没有读到,返回-1
int read();
//读取到的字符存入字符数组c
read(char[] c);
//读取到的字符存入字符数组c,从下标offset开始,个数为len
read(char[] c,int offset,int len);
@Test//字符输入流
public void test2() throws Exception {
FileReader fr = new FileReader("C:\\Users\\admin\\Desktop/c.txt");
/* int r=0;
while ((r=fr.read())!=-1){
System.out.println((char)r);
}*/
char [] cs = new char[100];
fr.read(cs);
System.out.println(cs);
}
字符输出流
构造方法
new FileWriter(String);
new FileWriter(String,boolean);
new FileWriter(File);
new FileWriter(File,boolean);
//write方法:向字符输出流中写入字符数据
//写入一个字符
void write(int c)
//写入一个字符串
void write(String str)
//写入一个字符数组
void write(char[] c)
//写入一个字符串,从off开始,写len个
void write(String str,int off,int len)
//写入一个字符数组,从off开始,写len个
void write(char[] c,int off,int len)
@Test//字符输出流
public void test1() throws IOException {
//还可以在地址后面加 ,true 表示追加
FileWriter fw = new FileWriter("C:\\Users\\admin\\Desktop/c.txt");
fw.write("喧闹任其喧闹,自有我自为之,我自风情万种,与世无争");
fw.flush();
}
//字符缓冲流
@Test
public void test3() throws IOException {
BufferedWriter bfw = new BufferedWriter(new FileWriter("C:\\Users\\admin\\Desktop/c.txt"));
long a = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
bfw.write("别人可以替你开车,但不能替你走路;可以替你做事,但不能替你感受。人生的路要靠自己行走,成功要靠自己去争取。天助自助者,成功者自救。");
}
long b = System.currentTimeMillis();
System.out.println(b-a);
}
其它流
1.缓冲流
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
2.转换流
InputStreamReader
OutputStreamWriter
3.数据流
DataInputStream
DataOutputStream
4.对象流
ObjectInputStream
ObjectOutputStream
标签:你学,字节,IO,System,int,小白学,File,println,new 来源: https://blog.csdn.net/weixin_51403996/article/details/109546892