首页 > 代码库 > 黑马程序员——IO流(一)

黑马程序员——IO流(一)

 
 
package IO;
 
import java.io.FileWriter;
/*IO(Inout Output)流
 * Io流用来处理设备之间的数据传输
 * Java对数据的操作是通过流的方式
 * Java用于操作流的对象都在Io包中
 * 流按操作数据分为两种:字节流与字符流
 * 流按流向分为:输入流,输出流
 * 
 * IO流常用基类
 * 字节流的抽象基类
 * InputStream OutputStream
 * 字符流的抽象基类
 * Reader Writer
 * 由这四个类派生出来的子类的名称中都是会以其
 * 父类的名作为子类名的后缀
 * 
 * */
import java.io.IOException;
 
 
/*既然IO流用于操作数据的
 * 那么数据最常见的体现形式:文件
 * 
 * 那么先以操作文件为主来进行演示
 * 
 * 需求:在硬盘上,创建一个文件并写入一些数据
 * 
 * 找到一个专门用来操作文件的Writer子类对象
 * FileWriter 后缀名是父类名,前缀名是该流对象的功能
 * 
 * */
public class Demo {
 
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//创建一个FileWriter对象,该对象一被初始化,就必须要有被操作的文件。
//而且该文件会被创建到指定的目录下,如果该目录下已有同名文件,将会被覆盖
//要明确写的目的地
FileWriter fileWriter=new FileWriter("D://demo.txt");
//调用write方法,将字符串写入到流当中
fileWriter.write("abdfsrewr");
//刷新流对象中的缓冲数据,将数据刷新到目的地中
//fileWriter.flush();
 
//关闭流资源,但是关闭之前会刷新一下内部缓冲中的数据
//将数据刷到目的地中
//和flush的区别在于:flush刷新后,流可以继续使用,close刷新后将流关闭
fileWriter.close();
//先调用一次Flush 最终要关闭
 
}
 
}
package IO;
 
import java.io.FileWriter;
import java.io.IOException;
 
/*
 * 对已有文件的数据进行续写
 * 
 * \r\换行
 * 
 * */
public class Demo1 {
 
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//传递一个true参数:代表不覆盖已有的文件,并在已有文件的末尾处进行数据的续写
FileWriter fileWriter=new FileWriter("D://demo.txt",true);
fileWriter.write("ffasfas\nhh");
fileWriter.close();
}
 
}
package IO;
 
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
 
public class Demo2 {
 
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//创建一个文件 读取流对象 和指定名称的文件 相关联 要保证该文件是已经存在的,如果不存在会异常
FileReader fileReader=new FileReader("D://demo.txt");
//调用读取流的read方法
// int ch=fileReader.read();
// System.out.println((char)ch);
// fileReader.close();
// while(true){
// int ch =fileReader.read();
// if (ch==-1) {
// break;
// }
// System.out.println((char)ch);
// }
// }
int ch=0;
while ((ch=fileReader.read())!=-1) {
System.out.println((char)ch);
 
}
 
 
 
}
 
}
package IO;
 
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
 
public class Demo3 {
 
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileReader fileReader=new FileReader("D://demo.txt");
//定义一个字符数组,用于储存读到的字符。
//该read(char【】)返回的是读到的字符个数
char[] buf=new char[1024];
// int num=fileReader.read(buf);
// System.out.println(num+new String(buf));
// fileReader.close();
int num=0;
while ((num=fileReader.read(buf))!=-1) {
System.out.println(new String(buf,0,num));
}
 
 
fileReader.close();
}
 
}
package IO;
 
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
 
public class Demo4 {
 
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileReader fileReader=new FileReader("D://demo.txt");
char[] buf=new char[1024];
int num=0;
while ((num=fileReader.read(buf))!=-1) {
System.out.print(new String(buf,0,num));
}
fileReader.close();
}
 
}
package IO;
 
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
/*将c盘一个文件复制到d盘
 * 原理:
 * 将c盘文件数据存储到d的文件中
 * 步骤:
 * 1.在d盘中创建一个文件,用于存储c盘文件中的数据
 * 2.定义读取流和c盘文件关联
 * 3.通过不断地读写完成数据的储存
 * 4.关闭资源
 * 
 * 
 * */
public class Demo5 {
 
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//从c盘读一个字符,就往d盘写一个字符。
//Copy1();
Copy2();
}
public static void Copy1() throws IOException {
//创建目的地
FileWriter fileWriter =new FileWriter("D://demo1.txt");
//已有文件关联
FileReader fileReader= new FileReader("D://Noname2.java");
char[] buf=new char[1024];
int num=0;
while ((num=fileReader.read(buf))!=-1) {
System.out.print(new String(buf,0,num));
}
int ch=0;
while ((ch=fileReader.read())!=-1) {
fileWriter.write(ch);
}
fileReader.close();
fileWriter.close();
}
public static void Copy2() throws IOException {
FileWriter fileWriter=null;
FileReader fileReader=null;
fileWriter=new FileWriter("D://demo2.txt");
fileReader=new FileReader("D://demo.txt");
char[] buf=new char[1024];
int len=0;
while ((len=fileReader.read())!=-1) {
fileWriter.write(buf,0,len);
}
fileReader.close();
fileWriter.close();
}
 
}
 
package IO;
 
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
 
/**
 * 字符流缓冲区
 * 缓冲区的出现提高了对数据的读写的效率
 * 对应类:
 * BufferedWriter
 * BufferedReader
 * 缓冲区要结合流才可以使用
 * 在流的基础上对流的功能进行了增强操作
 * 缓冲区的出现是为了提高操作效率而出现
 * 所以再创建缓冲区之前,必须要有流的对象
 * 该缓冲区当中,提供了一个跨平台的换行符.next line
 * **/
public class Demo6 {
 
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//创建一个字符写入流对象
FileWriter fileWriter=new FileWriter("D://demo.txt");
//为了提高字符写入流效率1,加入了缓冲技术
BufferedWriter bufferedWriter=new BufferedWriter(fileWriter);
//需要被提高效率的流对象,作为参数传入缓冲去的构造函数即可
// bufferedWriter.write("afdfdsf");
// bufferedWriter.newLine();
// bufferedWriter.write("yyyyy");
// bufferedWriter.flush();
for (int i = 0; i < 10; i++) {
bufferedWriter.write("sfsdfsdf"+i);
bufferedWriter.newLine();
bufferedWriter.flush();
}
//关闭缓冲区,就是在关闭缓冲区中的流对象
bufferedWriter.close();
//fileWriter.close();关闭缓冲区之后,就不用关这个
 
//只要用到缓冲区,就要记得刷新
}
 
 
}
 
 

详情请查看:http://edu.csdn.net/heima

黑马程序员——IO流(一)