字节型文件输入流(FileInputStream)
读取文件数据
1.包
3.创建对象
调用一个带File类型的构造方法
调用一个带String类型的构造方法
1.包
java.io.InputStream(带Stream的都是字节型)
java.io.FileInputStream
2.了解一下继承关系 InputStream类是字节型输入流的父类3.创建对象
调用一个带File类型的构造方法
调用一个带String类型的构造方法
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; public class TestInputStream { public static void main(String[] args){ File file = new File("F:\JavaTest\aest.txt"); try { FileInputStream fileInputStream = new FileInputStream(file);//必须抛出异常才可 } catch (FileNotFoundException e) {//可以写成IOException e.printStackTrace(); } //FileInputStream fileInputStream1 = new FileInputStream(new File("F:\JavaTest\Test.txt")); //FileInputStream fileInputStream2 = new FileInputStream("F:\JavaTest\Test.txt"); } }
(1) int code = read(); 每次从流管道中读取一个字节 返回字节的code码
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class TestInputStream { public static void main(String[] args){ File file = new File("F:\JavaTest\Test.txt"); try { FileInputStream fileInputStream = new FileInputStream(file);//必须抛出异常才可 int code = fileInputStream.read();//返回code码 每次一个code码 必须抛出异常 如果读不到返回-1 while(code!=-1){ System.out.println((char)code); code = fileInputStream.read();//重新获取值, 否则一直输出一个 } } catch (FileNotFoundException e) {//可以写成IOException e.printStackTrace(); } catch (IOException e) {//read()方法抛出的异常 e.printStackTrace(); } } } 输出结果: a b c d e f g h i j
(3)int count = available(); 返回流管道中还有多少缓存的字节数
(4)skip(long n) 跳过几个字节 读取
*(5)close() 将流管道关闭---必须要做 最好放在finally里 注意代码的健壮性 判断严谨
(4)skip(long n) 跳过几个字节 读取
*(5)close() 将流管道关闭---必须要做 最好放在finally里 注意代码的健壮性 判断严谨
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class TestInputStream { public static void main(String[] args){ FileInputStream fileInputStream= null;//最好放在try外面 不然的话 finally中调用不到对象 try { fileInputStream = new FileInputStream("F:\JavaTest\Test.txt");//必须抛出异常才可 //同时将数据全部存入流道 byte [] b = new byte[5]; int value1 = fileInputStream.available();//返回 流道中 有效值个数 21 System.out.println(value1); int count = fileInputStream.read(b);//将读取到的数据装入bytes数组中,返回读取到的有效字节的个数 //流道数据被装入数组中, 流道数据减少 System.out.println(count); System.out.println(fileInputStream.available());//16 while(count!=-1){ String value = new String(b,0,count); System.out.print(value); count = fileInputStream.read(b);//重新获取值, 否则一直输出一个 } } catch (FileNotFoundException e) {//可以写成IOException e.printStackTrace(); } catch (IOException e) {//read()方法抛出的异常 e.printStackTrace(); }finally { try { if(fileInputStream!=null){ fileInputStream.close();//必须关闭,关闭的是流道数据通道,不是file对象 System.out.println(" "+"通道关闭"); } } catch (IOException e) { e.printStackTrace(); } } } } 输出结果: 21 5 16 abcdefg hijklmn opq 通道关闭
字节型文件输出流(FileOutputStream)
将数据写入文件中
1. 包
3.创建对象
调用一个带File参数 还有File boolean重载
调用一个带String参数 还有String boolean重载
4.常用方法
write(int code); 将给定code对应的字符写入文件 '='
write(byte[]) 将数组中的全部字节写入文件 getByte()
flush(); 将管道内的字节推入(刷新)文件
close(); 注意在finally中关闭
将数据写入文件中
1. 包
java.io.FileOutputStream
2.继承OutputStream,是所有字节型输出流的父类3.创建对象
调用一个带File参数 还有File boolean重载
调用一个带String参数 还有String boolean重载
4.常用方法
write(int code); 将给定code对应的字符写入文件 '='
write(byte[]) 将数组中的全部字节写入文件 getByte()
flush(); 将管道内的字节推入(刷新)文件
close(); 注意在finally中关闭
import java.io.FileOutputStream; import java.io.IOException; public class TestOutputStream { public static void main(String [] args){ FileOutputStream fos = null; try { //原目录中无此文件 //如果是输入的话,无此文件 运行会出现异常,如果是输出流,则不会出现,会自动帮我们创建这个文件 //FileInputStream fis = new FileInputStream("F:\JavaTest\TestTest.txt");报错 fos = new FileOutputStream("F:\JavaTest\TestTest.txt",true); /* * 加true,如果每次操作文件时,不会重新创建一个同名文件,然后覆盖原文件 * 如果不加true,或者为false时,每次操作文件,会将源文件删除,重新创建一个新的文件,内容为新的操作的内容 */ String string = "长安十二时辰"; byte[] bytes = string.getBytes(); fos.write(bytes); fos.flush();//刷新 将管道中的字节 推入文件中 可不写,因为每次操作会默认自动执行此函数,但写上更好 System.out.println("写入完毕"); } catch (IOException e) { e.printStackTrace(); }finally { if(fos!=null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
输入结果: