Io流之File概述(递归/字节流/字符流)
File:1.文件 2.目录(文件夹)3.路径名
IO流用来处理设备之间的数据传输
流按操作数据分为两种:字节流与字符流。
package com.oracle.demo01;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo01 {
public static void main(String[] args) throws IOException {
//创建字节输出流对象
//当这个构造方法指定地址的时候,如果存在则覆盖,如果不存则自动创建!(必须指定文件,不能是文件夹)
FileOutputStream fos=new FileOutputStream("D:\\java\\d.txt");
//向文件中写入一个字节write(int b) ASCII码
//0 -48
//a -49
//A -65
/* fos.write(49);
fos.write(48);
fos.write(48);*/
//向文件中写入一个字节数组 write(byte[] b)
//BCDE
byte[] bytes={-66,-67,-68,-69,-70};
/*fos.write(bytes);*/
//从哪开始 传几个
fos.write(bytes,2,2);
//释放资源
fos.close();
}
}
package com.oracle.demo01;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo02 {
public static void main(String[] args) throws IOException {
//创建字节输出流(开启续写功能)
FileOutputStream fos=new FileOutputStream("D:\\java\\d.txt",true);
//字符串--->字节数组 getBytes();
fos.write("abc".getBytes());
//换行\r\n
fos.write("\r\n换行了".getBytes());
//释放资源
fos.close();
}
}
如果不开启续写模式,则不用加任何属性,默认就是false
递归:在当前方法里面调用自身就称为递归
public void method(){
System.out.println(“递归调用自身”);
//在当前方法内调用自己
method();
}
递归也可以分两种形式,一种是直接递归,另一种是间接递归
直接递归就是方法自身调用自身,间接递归是A可以调用B,B在调用C,C在调用A这种形式
字节流:什么文件都可以复制
字节输出流::OutputStream
以后要是看到Stream结尾就要肯定为是字节流,如果不是Stream结尾则是字符流
close():释放资源进行关闭之前,自动刷新一下
flush():写一次刷新一次!
明确数据源:FileOutputStream fis=new FileOutputStream("写入的路径");
package com.oracle.demo01;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Demo04 {
public static void main(String[] args) throws IOException {
//创建字节输入流(明确从哪个文件中读取数据)
FileInputStream fis=new FileInputStream("D:\\java\\d.txt");
//读取一个字节
/* int len=fis.read();
System.out.println((char)len);
len=fis.read();
System.out.println((char)len);
len=fis.read();
System.out.println((char)len);
len=fis.read();
System.out.println((char)len);
len=fis.read();
System.out.println((char)len);
len=fis.read();
System.out.println(len);*/
//一个字节一个字节读取文件所有数据
int len=0;
while((len=fis.read())!=-1){
System.out.println((char)len);
}
//释放资源
fis.close();
}
}
字节输入流:InputStream
FileInputStream 读取文件数据的输入字节流
1.找到目标文件 2. 建立数据的输入通道 3. 读取文件中的数据 4.关闭资源
package com.oracle.demo01;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Demo05 {
public static void main(String[] args) throws IOException {
//明确数据源
FileInputStream fis=new FileInputStream("D:\\java\\d.txt");
//创建字节数组
byte[] bytes=new byte[2];
/* //读取一个字节数组
int len=fis.read(bytes);
//实际读取的有效字节数
System.out.println(len);
//字节数组---->字节字符串
System.out.println(new String(bytes));*/
//读取一个字节数组
int len=0;
while((len=fis.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}
//释放资源
fis.close();
}
}
字符流:只可以复制文本文件,什么是文本文件,记事本打开能看的懂的就是文本文件!
字符输入流基类:Reader
字节流转字符流:InputStreamReader //读取字节输入流中的字符
package com.oracle.demo02;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Demo01 {
public static void main(String[] args) throws IOException {
//创建字符输入流
FileReader fr=new FileReader("D:\\java\\d.txt");
int len=0;
//一个字符一个字符读
while((len=fr.read())!=-1){
System.out.println((char)len);
}
//释放资源
fr.close();
}
}
package com.oracle.demo02;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Demo02 {
public static void main(String[] args) throws IOException {
//创建字符输入流
FileReader fr=new FileReader("D:\\java\\d.txt");
//创建字符数组
char[] ch=new char[1024];
//一个字符数组一个字符数组的读
int len=0;
while((len=fr.read(ch))!=-1){
System.out.println(new String(ch,0,len));
}
//释放资源
fr.close();
}
}
字符输出流:writer
Writer是所有字符输出流的顶层父类, 并且这个类是一个抽象类。一般使用子类,最常用的子类是FileWriter。
public class Demo01Writer {
public static void main(String[] args) throws IOException {
//1创建
FileWriter fw = new FileWriter("fiel05.txt");
//2写入
fw.write("起于凡而非凡");
// 3刷新
fw.flush();
// 4释放
fw.close();
}
}
import java.io.FileWriter;
import java.io.IOException;
public class Demo03 {
public static void main(String[] args) throws IOException {
//创建字符输出流
FileWriter fw=new FileWriter("D:\\java\\d.txt");
//写入一个字符
fw.write(100);
fw.flush();
//写入一个字符
fw.write("起于凡而非凡");
//写入字符数组
char[] ch={'a','1','r'};
fw.write(ch);
fw.flush();
//释放资源
fw.close();
}
}

浙公网安备 33010602011771号