Java IO流-InputStream和OutputStream
InputStream是输入流 OutputStream是输出流;
InputStream输入流可以把文件从硬盘读取到内存;
OutputStream输出流可以把文件从内存写入到硬盘;
我们实际使用的都是InputStream和OutputStream的子类;
比如文件操作方面用的是FileInputStream和FileOutputStream;
我们给下实例,视频教程里会详细讲解:
准备工作,我们在C盘建一个txt文件 测试文件.txt
随便加点内容:
package com.java1234.chap10.sec03; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; public class Demo1 { public static void main(String[] args) throws Exception { File file=new File("C://测试文件.txt"); InputStream inputStream=new FileInputStream(file); // 实例化FileInputStream byte b[]=new byte[1024]; int len=inputStream.read(b); inputStream.close(); // 关闭输入流 System.out.println("读取的内容是:"+new String(b,0,len)); } }
把文件从硬盘读取到内存,并且输出:
运行结果:
读取的内容是:我是人 www.java1234.com
上面那个是定义了固定字节数组 一批读取的,我们现在改进下,获取文件长度,然后定义指定字节数组的长度;
package com.java1234.chap10.sec03; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; public class Demo2 { public static void main(String[] args) throws Exception { File file=new File("C://测试文件.txt"); InputStream inputStream=new FileInputStream(file); // 实例化FileInputStream int fileLength=(int)file.length(); byte b[]=new byte[fileLength]; inputStream.read(b); inputStream.close(); // 关闭输入流 System.out.println("读取的内容是:"+new String(b)); } }
运行结果也一样;
我们再来一种方式 一个字节一个字节读取;
package com.java1234.chap10.sec03; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; public class Demo3 { public static void main(String[] args) throws Exception { File file=new File("C://测试文件.txt"); InputStream inputStream=new FileInputStream(file); // 实例化FileInputStream int fileLength=(int)file.length(); byte b[]=new byte[fileLength]; int temp=0; int len=0; while((temp=inputStream.read())!=-1){ // 一个字节一个字节读取,放到b字节数组里 b[len++]=(byte)temp; } inputStream.close(); // 关闭输入流 System.out.println("读取的内容是:"+new String(b)); } }
运行结果还是一样的;
下面是讲下输出流;
package com.java1234.chap10.sec03; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; public class Demo4 { public static void main(String[] args) throws Exception { File file=new File("C://测试文件.txt"); OutputStream out=new FileOutputStream(file); String str="你好,我好,大家好,Java好"; byte b[]=str.getBytes(); out.write(b); // 将b字节数组写入到输出流 out.close(); // 关闭输出流 } }
我们把指定文件写入到文件;
上面那种是直接覆盖的,我们再来一个追加的;
package com.java1234.chap10.sec03; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; public class Demo5 { public static void main(String[] args) throws Exception { File file=new File("C://测试文件.txt"); OutputStream out=new FileOutputStream(file,true); String str="你好,我好,大家好,Java好"; byte b[]=str.getBytes(); out.write(b); // 将b字节数组写入到输出流 out.close(); // 关闭输出流 } }