JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

java文件字符流和字符缓冲流

wys521 2024-11-25 11:01:03 精选教程 22 ℃ 0 评论

/**

* 测试文件字符流FileReader/FileWriter

*/

public class TestFileRW {

public static void main(String[] args) {

try (FileReader fr = new FileReader("iostream/testFile.txt");

FileWriter fw = new FileWriter("iostream/testFile2.txt")){

//字符流以字符为单位读写数据

for (int i = fr.read();i!=-1;i = fr.read()){

//.read()返回int在0-65535之间,对应unicode字符集,读完返回-1

fw.write(i);

//.write(int)一次写入16位/2byte二进制数

}

fw.flush();

}catch (Exception e ){

e.printStackTrace();

}

try(FileWriter fw = new FileWriter("iostream/testFile2.txt",true)){

//FileWriter在实例化时会对指定路径的文件进行覆盖,如果没有该文件会新建,如果有会覆盖成新的空文件,而第二个参数boolean append 为true时会在原文件的后面续写内容,不破坏原始内容,如果没有该文件也会新建

fw.write(".write()方法可以直接写入字符串\r\n");

//字符串中换行使用\r\n回车符+换行符完成

fw.flush();

}catch (Exception e ){

e.printStackTrace();

}

try(FileReader fr = new FileReader("iostream/testFile2.txt");

FileWriter fw = new FileWriter("iostream/testFile3.txt")){

char buffer[] = new char[1024];

//使用缓冲减少写入方法调用频率,字符流的缓冲的类型为char[]

//字符流中没有.available()方法估算长度

for (int len = fr.read(buffer);len!=-1;len = fr.read(buffer)){

//.read(char[])返回读取到的字符长度

fw.write(buffer,0,len);

//和字节输出流类似,传入数组、偏移量、长度

}

fw.flush();

}catch (Exception e){

e.printStackTrace();

}

try(FileWriter fw = new FileWriter("iostream/testFile3.txt");

BufferedWriter bw = new BufferedWriter(fw)){

//BufferedWriter字符缓冲流,处理流,对节点流进行包装,提供缓冲

bw.write("write方法没有变化");

bw.write("不使用换行时这句话和上一句在同一行");

bw.newLine();

bw.write("使用newLine方法实现换行");

bw.flush();

}catch (Exception e){

e.printStackTrace();

}

try(FileReader fr = new FileReader("iostream/testFile3.txt");

BufferedReader br = new BufferedReader(fr)){

System.out.println(br.readLine());

//.readLine()方法一次读取一行,一行读完结尾不包含\r\n

}catch (Exception e){

e.printStackTrace();

}

try(BufferedReader br = new BufferedReader(new FileReader("iostream/testFile3.txt"));

BufferedWriter bw = new BufferedWriter(new FileWriter("iostream/testFile4.txt"))){

int num=1;

for (String line = br.readLine();line!=null;line = br.readLine()){

//当内容读完.readLine()返回空

bw.write(num+".\t"+line);

bw.newLine();

//.readLine()方法读取的字符串不包含\r\n,在写入时需要加.newLine()方法换行

num++;

//行号

}

bw.flush();

}catch (Exception e){

e.printStackTrace();

}

}

}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表