首页 > 代码库 > 黑马程序员——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流(一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。