I/O流
来源:互联网 发布:免费苹果恢复软件 编辑:程序博客网 时间:2024/05/17 06:10
字节流概念
两个抽象类InputStream和OutputStream
字节流读文件代码段
package com.tuoshang;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class Zijieliu { public static void main(String[] args) throws IOException { //创建一个文件字节输入流 FileInputStream in = new FileInputStream("test.txt"); int b=0; while(true){ b=in.read();//变量b记住读取的一个字节 if(b==-1){ break; } System.out.println(b);//否则将b打印出 } in.close(); }}
FileOutputStream
它是操作文件的字节流输出流,专门用于把数据写入文件.
package com.tuoshang;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class ZijieliuOut { public static void main(String[] args) throws IOException { //创建一个文件字节输出流 FileOutputStream out=new FileOutputStream("example.txt"); String str="传智播客"; byte[] b=str.getBytes();//获取该文件字节表现形式并存在数组中 for (int i = 0; i < b.length; i++) { out.write(b[i]); } out.close(); }}
如果通过FileOutputStream向一个已存在的文件中写入数据,那么该文件中的数据首先会被清空,再写入新数据.
若希望追加内容,需要使用FileOutputStream的构造函数FileOutputStream(String filename,boolean append)来创建文件输出流对象.
outoutStream out = new FileOutputStream("example.txt true");
文件的copy
package com.tuoshang;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class Copy { public static void main(String[] args) throws IOException { //创建一个文件字节输出流,用于读取当前目录下source文件夹下的style.m4a文件 InputStream in=new FileInputStream("source\\style.m4a"); //创建一个文件字节输出流,用于讲读取的数据写入target目录下的文件中 OutputStream out=new FileOutputStream("tarfet\\style.m4a"); int len;//记住每一次读取的一个字节 long begintime=System.currentTimeMillis();//获取当前 系统时间 while((len=in.read())!=-1){//读取一个字节并判断是否读到文件末尾 out.write(len);//将读到的字节写入文件 } long endtime=System.currentTimeMillis(); System.out.println(endtime-begintime); in.close(); out.close(); }}
字节流的缓冲区
//以下是用缓冲区读取文件 byte[] buff=new byte[1024]; //定义一个int类型的变量len,记住读取读入缓冲区的字节数 int len;//记住每一次读取的一个字节 long begintime=System.currentTimeMillis();//获取当前 系统时间 while((len=in.read(buff))!=-1){//读取数据并存入buff.并且判断是否读到文件末尾 out.write(buff,0,len);//从第一个字节开始,向文件写入len个字节 }
使用缓冲区,减少了对文件的操作次数,所以可以提高读写数据的效率.
装饰设计模式
**待补充**
字符流
字符流定义及基本用法
两个顶级父类
1. Reader
2. Writer
FileReader和FileWriter用于读写文件
BufferedReader和BufferedWriter是具有缓冲功能的流
字符流操作文件
package com.tuoshang;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class ZifuFile { public static void main(String[] args) throws IOException { //创建一个FileReader对象用来读取文件中的字符 FileReader reader = new FileReader("reader.txt"); //定义一个变量用于读取的字符 int ch; while((ch=reader.read())!=-1){//循环判断是否读到文件的末尾 System.out.println((char)ch);//不是字符流末尾就转为字符打印 } reader.close(); }}
字符输入流的read()方法返回的int类型值,如果想获得字符就需要进行强制类型转换.
8.3其他IO流
8.3.1:ObjectInputStream和ObjectOutputStream
8.3.2:DataInputStream和DataOutputStream
8.3.3:PrinStream
8.3.4:标准输入输出流
8.3.5:PipedInputStream和PipedOutputStream
8.3.6:
#
#
#
8.4 File类
8.4.1 File的常用方法
IO流的小作业-统计作业交的情况
直接上代码
package com.ibeifeng;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;/*io流的小作业*/ //作业_1_3_1_1_xxx.zippublic class Demo5 { private static ArrayList<String> arrList = new ArrayList<String>(); public static void main(String[] args) { try { store(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 统计作业提交的名单 * 统计作业未提交的名单 */ //获取学生名字的集合 public static void getNames() { File file = new File("C:\\Users\\ibf\\Desktop\\studentWork"); String[] names = file.list(); for (String tmp : names) { //字符串处理,把学生名字存储集合 System.out.println(tmp); tmp = tmp.replaceAll("作业_1_3_1_1_", ""); tmp = tmp.replaceAll(".rar", ""); tmp = tmp.replaceAll(".zip", ""); System.out.println(tmp); arrList.add(tmp); } } //把学生名单存储在磁盘上 public static void store() throws IOException { //获取学生名字的集合 getNames(); //创建写入对象 BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\ibf\\Desktop\\stu.txt")); //写入学生名字 for (String tmp : arrList) { bw.write(tmp); //bw.write("\r\n");//"\r" "\n" "\r\n" bw.newLine(); } //关闭资源 bw.close(); }}
0 0
- I/O 流
- java I/O流
- c++I/O流
- I/O流
- java I/O流
- java I/O流
- 文件I/O流
- Java I/O流
- I/O 流分类
- I/O流
- I/O流操作
- C++ I/O流
- Day18 I/O流
- JAVA--I/O流
- java I/O流
- C++ I/O流
- I/O流
- 16、I/O流
- 2016.07.11回顾
- 华为OJ 初级:字符统计
- MYSQL分页limit速度太慢优化方法
- Android项目依赖多个项目,它们的jar包冲突的解决办法
- 微信公众号开发教程[003]-消息管理-接收消息
- I/O流
- 三维重建(四)PMVS算法 the patch-based MVS algorithm
- Select相关操作
- docker 操作
- 微信公众号开发教程[004]-消息管理-回复消息
- vulkan起航——调试samples
- Linux安装Skype
- 常用的网址收藏
- Droidplanner(tower) 系统分析