JAVA 二十五 IO流,字符流
标签: JAVA
文件读取
读取方式一
package com.io;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo {
public static void main(String[] args){
FileReader fr = null;
try {
fr = new FileReader("D:\\input\\text.txt");
try {
int c =0;
//每次读取一个字符
while((c=fr.read())!=-1){ //加小括号 改变优先级,在while判断中完成赋值+循环,每循环一次判断一次,则每次判断都会调用fr.read();
System.out.print((char)c);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(fr!=null){
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
读取方式二
package com.io;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo2 {
public static void main(String[] args){
FileReader fr = null;
try {
fr = new FileReader("D:\\input\\text.txt");
char cbuf[ ] = new char[102];
int c = 0;
try {
while((c=fr.read(cbuf))!=-1){ //fr.read(cbuf));返回值是chuf读取的字符串长度若达到数组最长则返回102,若不够,读取多少返回多少
System.out.print(new String(cbuf,0,c));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(fr!=null){
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
文件写入
package com.io;
import java.io.FileWriter;
import java.io.IOException;
/*
* IO流,处理设备之间的数据传输
* 按流向来分:输入流和输出流
* 根据操作的数据类型来分:字节流和字符流
*
*
* 字符流的两个基类:
* Reader 和 writer
*
*/
public class FileWriterDemo {
public static void main(String[] args){
FileWriter fw = null;
try {
fw = new FileWriter("D:\\input\\text.txt",true);//第二种构造方法,(地址,true),后面的新创建的都是追加在旧的字符之后
fw.write("ASSDFASFKLJALKJF", 0, "ASSDFASFKLJALKJF".length());
fw.flush();//FileWriter执行完成该方法内容才真正保存到txt中
fw.write("poiii");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Buffered带缓冲区的读取
package com.io;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*
* 字符读取缓冲区BufferedReader
* 提供了一个一次读取一行的方法readLine
* 当返回Null的时候,表示数据读取结束
*/
public class BufferReaderDemo {
public static void main(String [] args){
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("D:\\input\text.txt"));
String line = "";
int num = 1;
try {
while((line=br.readLine())!=null){
System.out.println(num+"\t"+line);
num++;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
带Buffered缓冲区的写入
package com.io;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWriterDemo {
public static void main(String[ ] args){
BufferedWriter bw =null;
FileWriter fw = null;
try {
//创建一个字符写入文件流
fw = new FileWriter("D:\\input\\test1.txt");
//为了提高字符写入流的效率,加入了缓冲技术
//只要讲要被提高效率的流对象作为参数传递给缓冲区的构造方法即可
bw = new BufferedWriter(fw);
bw.write("poiuy");
bw.newLine();//提供一个跨平台的换行符
bw.write("poiuy");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(bw!= null){
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fw!=null){
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}