您的位置:首页 > 编程语言 > Java开发

java流(IO流)的分类,文件续写、读入

2018-09-25 20:32 134 查看

流(IO流)的分类,写出流FileWriter

package com.qianfeng.test;

import java.io.FileWriter;
import java.io.IOException;

/*
* 流(IO流):input-output-stream。作用:实现两个设备之间的通信。
* 设备:内存,硬盘(磁盘	),控制台,键盘,文件,网络。
* 网络:在网络上,你的主机之外的环境。
*
* 流的分类:
* 根据流的操作的方式分类:输入流和输出流
* 根据数据的类型分类:字节流和字符流
*
* 字节流:传输的是字节,可以传输任意类型的数据。----视频,音频,文件,图片等。
* 字符流:传输的也是字节,不同点在于传输过程中加入了编码的操作,让我们在传输字符的时候更加便捷。----文件。
*
* 以内存为参考
* 字节流:--对应的父类
* 字节输入流:InputStream
* 字节输出流:OutputStream
*
* 字符流:--对应的父类
* 字符读入流(将数据输入内存):Reader
* 字符写出流(将数据从内存取出):Writer
*
* 先处理字符流:
* 实例:以磁盘的存储为例,将内容写入文件
* 分析:
* 因为传输的是字符----字符流
* 因为是从内存传出----写出流--FileWriter
*
*/
public class Demo2 {

public static void main(String[] args) throws IOException {

//创建写出流对象
/*
* 注意点一:关联文件的特点:如果之前不存在,程序会自动创建一个,如果已经存在,直接使用,但是会将原文件的内容覆盖。
* 注意点二:如果只写名字,不写具体的路径,默认的路径是当前的工程。
* 注意点三:我们可以指定自己的路径,但是一定要保证路径存在,否则报异常FileNotFoundException
*/
FileWriter fileWriter = new FileWriter("temp1.txt");

//调用写出方法
/*
* 注意点四:在执行write方法时,数据被临时写入了流对象的内部数组中,这是一个字节数组,会默认去查编码表。
*/
fileWriter.write("bingbingAndChenchen");

//调用刷新方法--会将内容真正的写入文件。
//fileWriter.flush();

//关闭流--a:将流关闭	b:刷新
//注意点五:流使用完后必须关闭。
fileWriter.close();

//注意点六:当流对象关闭,不能再进行任何操作,否则报异常java.io.IOException: Stream closed
//fileWriter.write("张三");

}
}

文件的续写:FileWriter(String file,boolean value)

package com.qianfeng.test;

import java.io.FileWriter;
import java.io.IOException;

/*
* 文件的续写:FileWriter(String file,boolean value)
* 当value为true的时候,不会将原来的内容删除。
*
* \:是转义字符	\t:制表符		\\:普通的斜杠
* 实现换行:\r\n----window下的换行。	linux:\n
*
*/
public class Demo3 {

public static void main(String[] args) {
FileWriter fileWriter = null;
// 创建对象并关联文件
try {
fileWriter = new FileWriter("temp2.txt", true);

// 写
fileWriter.write("bingbing");
fileWriter.write("\r\n");
fileWriter.write("zhangsan");

} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭
if (fileWriter != null) {
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

文件读入,read()一个字符一个字符的读

package com.qianfeng.test;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/*
* 实例:将数据从文件中取出--文件读入流(FileReader)
*/
public class Demo4 {

public static void main(String[] args) throws IOException {

//创建对象并关联文件。关联的文件必须存在。
FileReader fileReader = new FileReader("temp2.txt");

//读
/*
* 两种方式:
* 第一种:read()----一个字符一个字符的读
* 第二种:read(字符数组)--一次可以读取多个字符,将读到的字符临时存储到了这个数组中
*/

//第一种:read()----一个字符一个字符的读
//a:会将当前的字符读出	b:将当前的指针后移一个字符
int data;
//		data = fileReader.read();//这里得到的ASCII值
//		System.out.println((char)data);
//		data = fileReader.read();
//		System.out.println((char)data);
//		data = fileReader.read();
//		System.out.println((char)data);
//		data = fileReader.read();
//		System.out.println((char)data);
//		data = fileReader.read();
//		System.out.println((char)data);
//		data = fileReader.read();
//		System.out.println(data);//这里返回的是-1,代表读完了。
while((data = fileReader.read()) != -1){
System.out.println((char)data);
}

//关闭流
fileReader.close();

}
}

文件读入,read(字符数组)一次可以读取多个字符

package com.qianfeng.test;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Demo5 {

public static void main(String[] args) throws IOException {

//创建对象并关联文件。关联的文件必须存在。
FileReader fileReader = new FileReader("temp2.txt");

//第二种:read(字符数组)--一次可以读取多个字符,将读到的字符临时存储到了这个数组中.
/*
* 数组是临时存放数据的地方,我们会将读到的字符放到数组中,数组的大小决定了我们一次可以读到的字符个数。
* 但是从内存的角度考虑,临时数组并不是越大越好,一般数组的大小在1kb左右。
*
* 返回值:代表的是本次读到的真实字符个数,如果返回值是-1代表读完了。
*/
char[] arr = new char[2];
int num;
//		num = fileReader.read(arr);
//		System.out.println(new String(arr,0,num)+"  "+num);
//		num = fileReader.read(arr);
//		System.out.println(new String(arr,0,num)+"  "+num);
//		num = fileReader.read(arr);
//		System.out.println(new String(arr,0,num)+"  "+num);//代表将字符数组从下标0开始的num个字符转成字符串。
//		num = fileReader.read(arr);
//		System.out.println(new String(arr)+"  "+num);//-1,说明读完了

while((num=fileReader.read(arr))!=-1){
System.out.println(new String(arr,0,num)+"  "+num);
}

//关闭流
fileReader.close();
}
}

相对路径和绝对路径,内容拷贝

package com.qianfeng.test;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* 路径的讲解:
* 相对路径和绝对路径
* 实例:D:\\workspace\\32\\BigData1715N19\\src\\com\\qianfeng\\test\\Demo1.java  绝对路径
* 		com\\qianfeng\\test\\Demo1.java	   相对路径
* 相对路径:从路径中间的某个部位开始一直到当前的文件名字。
* 绝对路径:一个文件的完整路径,即从根目录开始的路径。
*
* 路径中的/	\是转义字符	\\==/
*
*/

public class Demo6 {

public static void main(String[] args) throws IOException, InterruptedException {

//实例:实现文件的赋值
//要求:将Demo1的内容拷贝到temp3.txt
//1.创建读入流和写出流并关联对应的文件。

FileReader fileReader = new FileReader("src\\com\\qianfeng\\test\\Demo2.java");
FileWriter fileWriter = new FileWriter("temp3.txt");

//2.读写
//一次读多个字符
//		char[] arr = new char[10];
//		int num;
//		while((num=fileReader.read(arr))!=-1){
//			//将字符数组的部分内容写入文件
//			fileWriter.write(arr,0,num);
//		}

//一次读一个字符
int num;
while((num=fileReader.read())!=-1){
fileWriter.write(num);//write()自带了编码
}

//3.关闭资源
fileReader.close();
fileWriter.close();

}
}
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: