JavaDay12-初识IO流、FileOutputStream、FileInputStream
一、基本概念
IO流--存储和读取数据的解决方案
IO流的作用:
1、input:将文件中的内容加载到程序中
2、output:将程序中的结果、输出保存在文件中
IO流的分类
1、输入流 输出流
2、字节流(可以操作图片、文本、视频、音频) 字符流(只能操作纯文本 .txt .md .xml .lrc)
字节流
1、InPutStream
- FileInPutStream
2、OutPutStream
- FileOutPutStream
字符流
1、Reader
2、Writer
二、FileOutPutStream-向文本文档中写入数据
步骤
1、创建FileOutputStream对象
- 细节:文件存在(是否清空)、文件不存在(上级目录必须存在)、是否续写(true)
2、调用write()方法
- 细节:写入整数、字节数组、换行
3、关闭资源
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
//FileOutputStream
public class ByteStreamDemo01{
//IOException是FileNotFoundException上级,只抛出一个即可
public static void main(String[] args) throws IOException {
FileOutputStream fs = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\Java_learningCode\\fileStreamLearn.txt");
//写入的是ASCII值表示的字符,即:{
fs.write(123);
//写入数组(会先清空)
byte[] a={10,20,30,40,50};//数组中的是所要存入字符的ASCII码值
fs.write(a);
fs.write(a,2,3);
fs.close();//释放资源
}
}
写入内容的不同情况
1、写入一个字符
write(int)
2、通过数组写入字符串
①先用数组接收需要写入的字符串;
②调用write(byte[])方法
注意点:
1、如果文件不存在则会创建一个新的文件,前提是父级路径是存在的
2、如果文件中有内容,那么每次写入都会清空文件
FileOutputStream-换行、续写
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
//FileOutputStream-换行、续写
public class ByteStreamDemo02 {
public static void main(String[] args) throws IOException {
FileOutputStream fs = new FileOutputStream("E:\\ideaCode\\JavaIOStream_HeiMa\\src\\ioStream\\ioStreamPractise.txt");
//写入一串字符串:I love you.
String str1="I love you";//创建字符串
byte[] bytes1 = str1.getBytes();//转成ASCII码值并存入数组
//System.out.println(Arrays.toString(bytes));//测试是否转成了ASCII值
fs.write(bytes1);//调用write()方法写入文档中
//换行
String str2="\r\n";
byte[] bytes2 = str2.getBytes();
fs.write(bytes2);
//写入第二行字符
String str3="William";
byte[] bytes3 = str3.getBytes();
fs.write(bytes3);
fs.close();
}
}
三、FileInputStream-读取文本文档中的数据
步骤
1、创建对象
2、调用read()方法
3、释放资源
细节:
1、读到的字符是ASCII值,要读取字符的话需要强转成char类型
2、读到末尾后,read()会返回-1
3、如果多次调用read(),那么后面读取数据是从上一次读完的位置继续读的
4、关闭资源、先打开的后关闭
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
//FileInputStream
public class ByteStreamDemo03 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("E:\\ideaCode\\JavaIOStream_HeiMa\\src\\ioStream\\ioStreamPractise.txt");
int read = fis.read();//第一次调用read()
System.out.println(read);//读取一个字符的ASCII值
System.out.println((char)read);//读取一个字符
//循环读取数据
int b;
while ((b=fis.read())!=-1){//第2次调用read(),从第二个字符开始读,直到末尾
System.out.print((char)b);
}
//拷贝--将一个文件复制到另一个文件中:边读边写
FileOutputStream fos = new FileOutputStream("E:\\ideaCode\\JavaIOStream_HeiMa\\src\\ioStream\\ioStreamPractise1.txt");
int bb = 0;
while ((bb=fis.read())!=-1){//第三次调用read(),由于上次已经读完了,所以什么也读不到
System.out.print((char)bb);
fos.write(bb);
}
//一次读取多个字节的数据
byte[] bytes = new byte[8];//创建一个字节数组,一次性读取8个字符
int len=fis.read(bytes);//返回本次读取到的字节数 8
String str = new String(bytes,0,len);//把字节数组的一部分变成字符串
System.out.println(str);
fos.close();//先打开的后关闭
fis.close();//千万不要忘记释放资源
}
}

浙公网安备 33010602011771号