java笔记八:IO流之字符流与字符缓冲流

  java中字符流主要都是继承于Reader和Writer两个抽象类。用于对字符文本的读写操作。

 

一、转换类流

 1 package com.iotest;
 2
 3 import java.io.FileInputStream;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.InputStreamReader;
 8 import java.io.OutputStreamWriter;
 9
10 public class ConverseStreamDemo {
11
12     public static void main(String[] args) {
13         String s = “F:\shar\test\test3.txt”;
14         try {
15             //将字节流转为字符流
16             OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(s));
17             osw.write(“中国北京”);
18             System.out.println(osw.getEncoding());
19             osw.close();
20             osw = new OutputStreamWriter(new FileOutputStream(s,true),”GB2312”);
21             osw.write(“中国北京”);
22             System.out.println(osw.getEncoding());
23             osw.close();
24         } catch (FileNotFoundException e) {
25             // TODO Auto-generated catch block
26             e.printStackTrace();
27         } catch (IOException e) {
28             // TODO Auto-generated catch block
29             e.printStackTrace();
30         }
31         try {
32             //将字节流转为字符流
33             InputStreamReader isr = new InputStreamReader(new FileInputStream(s),”GB2312”);
34             int c;
35             while((c=isr.read()) != -1){
36                 System.out.print((char)c);
37             }
38             System.out.println();
39             isr.close();
40         } catch (FileNotFoundException e) {
41             // TODO Auto-generated catch block
42             e.printStackTrace();
43         } catch (IOException e) {
44             // TODO Auto-generated catch block
45             e.printStackTrace();

46         }
47     }
48
49 }

 

二、FileReader和FileWriter

 1 package com.iotest;
 2
 3 import java.io.FileNotFoundException;
 4 import java.io.FileReader;
 5 import java.io.FileWriter;
 6 import java.io.IOException;
 7 /
 8   使用flush()将流数据刷到目标里,这时流还存活着,还可以继续使用该流进行别的操作。
 9   close()虽然也有flush()的效果但是这时流已经死了,你如果想继续使用流的话就必须在此建立流
10  /
11 public class MutiplicationTable {
12
13     public static void main(String[] args) throws IOException {
14         String s = “F:\shar\test\test5.txt”;
15         FileWriter fw = new FileWriter(s);
16         FileReader fr = new FileReader(s);
17         for (int i = 1; i <= 9; i++) {
18             for (int j = 1; j <= i; j++) {
19                 String str = i + ““ + j + “=” + ij + “ “;
20                 fw.write(str);
21             }
22             fw.write(“\r\n”);
23             /flush是指强行将输出流中的数据写到文件里面去。如果写到这里的话就是一行一行的写入文件
24              最好每写完一部分就刷新一次,如果最后刷新的话可能会造成数据的丢失
25              */
26             fw.flush();
27         }
28         //如果又不写flush()又不写close(),则不会写入任何内容到文本里。只是写到了缓冲区
29         //fw.flush(); 写到这里的话就是所有的内容一起写进文件
30         //fw.close(); close之前会调用flush()
31         //读字符输入流的数据
32         int c;
33         while ((c=fr.read())!=-1) {
34             System.out.print((char)c);
35         }
36     }
37
38 }

 

三、BufferedReader和BufferedWriter

 1 package com.iotest;
 2
 3 import java.io.BufferedOutputStream;
 4 import java.io.BufferedWriter;
 5 import java.io.FileOutputStream;
 6 import java.io.FileWriter;
 7 import java.io.IOException;
 8
 9 public class PrimeNumber {
10     BufferedWriter bw = null;
11     String fileName = “F:\shar\test\test7.txt”;
12     //判断是否是质数
13     public boolean isPrime(int n){
14         for(int i=2;i<=n/2;i++){
15             if(n%i == 0){
16                 return false;
17             }
18         }
19         return true;
20     }
21     void printPrime(int m) throws IOException{
22         //将字节流转缓冲流
23         bw = new BufferedWriter(new FileWriter(fileName));
24         int j = 0;
25         for (int i = 2; i < m; i++) {
26             if(isPrime(i)){
27                 j++;
28                 String s = String.valueOf(i);
29                 String s1 = s + “ “;
30                 bw.write(s1);  //写入文本文件
31                 if(j==10){
32                     j = 0;
33                     bw.newLine();  //写入一个行分隔符
34                     bw.flush();  //强制刷新
35                 }
36             }
37         }
38
39         bw.close();
40     }
41     public static void main(String[] args) throws IOException {
42         PrimeNumber pn = new PrimeNumber();
43         pn.printPrime(100);
44     }
45
46 }

四、PrintWriter

 1 package com.iotest;
 2
 3 import java.io.FileWriter;
 4 import java.io.IOException;
 5 import java.io.PrintWriter;
 6
 7 public class PrintWriterDemo {
 8
 9     public static void main(String[] args) throws IOException {
10         int A = 0;  //千位
11         int B = 0;  //百位
12         int C = 0;  //十位
13         int num = 0;
14         String fileName = “F:\shar\test\test8.txt”;
15         FileWriter fw = new FileWriter(fileName); //字符输出流
16         PrintWriter pw = new PrintWriter(fw);     //将字节输出流转为PrintWriter
17         for (int i = 1000; i < 10000; i++) {
18             A = i/1000;
19             B = i/100 % 10;
20             C = i/10 % 10;
21             if(i%11==0 && A == B+C){
22                 pw.print(i+” “);
23                 if(++num % 7 == 0){
24                     pw.println();  //写入回车换行
25                     pw.flush();    //强制刷新流
26                 }
27             }
28         }
29         fw.close();
30
31     }
32
33 }

五、标准IO

 1 package com.iotest;
 2
 3 import java.io.BufferedReader;
 4 import java.io.FileWriter;
 5 import java.io.IOException;
 6 import java.io.InputStreamReader;
 7 import java.io.PrintWriter;
 8 import java.util.Scanner;
 9
10 public class PackStardIO {
11
12     public static void main(String[] args) throws IOException {
13         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
14         PrintWriter o = new PrintWriter(System.out);  //包装标准输出
15         String s;
16         while((s=br.readLine())!=null && s.length()!=0){
17             o.println(s.toUpperCase());
18             //o.flush();   //一定要强制刷新让其输出来,否则不会输出
19         }
20     }
21
22 }

 1 package com.iotest;
 2
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.BufferedReader;
 6 import java.io.FileInputStream;
 7 import java.io.FileNotFoundException;
 8 import java.io.FileOutputStream;
 9 import java.io.IOException;
10 import java.io.InputStreamReader;
11 import java.io.PrintStream;
12
13 public class StandardIORedirect {
14
15     public static void main(String[] args) throws IOException {
16         PrintStream console = System.out;
17         BufferedInputStream in = new BufferedInputStream(new FileInputStream(“C:\Documents and Settings\01\桌面\Test\src\com\iotest\StandardIORedirect.java”));
18         PrintStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream(“F:\shar\test\test9.txt”)));
19         System.setIn(in);     //对标准输入流重定向
20         System.setOut(out);
21         System.setErr(out);
22         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
23         String s;
24         while((s=br.readLine())!=null){   //从BufferedReader中读取一行数据
25             System.out.println(s);
26         }
27         out.close();
28         System.setOut(console);
29     }
30
31 }

六、随即访问文件类

 1 package com.iotest;
 2
 3 import java.io.FileNotFoundException;
 4 import java.io.IOException;
 5 import java.io.RandomAccessFile;
 6
 7 public class RandomRW {
 8     public static void main(String[] args) throws IOException {
 9         RandomAccessFile raf = new RandomAccessFile(“F:\shar\test\test10.dat”,”rw”);
10         final int DOUBLE_SIZE = 8;
11         for (int i = 0; i < 10; i++) {
12             raf.writeDouble(i);
13             System.out.print(“ “ + (double)i);
14         }
15         System.out.println();
16         raf.close();
17         RandomAccessFile raf1 = new RandomAccessFile(“F:\shar\test\test10.dat”,”rw”);
18         raf1.seek(3DOUBLE_SIZE);  //找到某个位置
19         raf1.writeDouble(300);     //往该位置插入数据
20         raf1.seek(5DOUBLE_SIZE);
21         raf1.writeDouble(500);
22         raf1.close();
23         RandomAccessFile raf2 = new RandomAccessFile(“F:\shar\test\test10.dat”,”r”);
24         for (int i = 0; i < 10; i++) {
25             System.out.print(“ “+raf2.readDouble());
26         }
27         raf2.close();
28     }
29
30 }
时间: 2024-08-04 06:14:05

java笔记八:IO流之字符流与字符缓冲流的相关文章

java IO之 File类+字节流 (输入输出 缓冲流 异常处理)

1. File类 File 路径问题: 上下级文件夹之间使用分隔符分开: 在Windows中分隔符为'\' ,在Unix/Linux中分隔符为'/' 跨平台分隔符: 专业的做法是使用File.separatorChar,这个值会根据系统得到的相应的分隔符. 例:new File("c:"+File.separatorChar+"a.txt"); 注意,如果是使用"\" ,则需要进行转义,写为"\\"才可以     绝对路径与相

Java笔记:IO

说明,本文内容来源于java io系列01之 "目录",做了一些删减. Java库的IO分为输入/输出两部分. 早期的Java 1.0版本的输入系统是InputStream及其子类,输出系统是OutputStream及其子类. 后来的Java 1.1版本对IO系统进行了重新设计.输入系统是Reader及其子类,输出系统是Writer及其子类. Java1.1之所以要重新设计,主要是为了添加国际化支持(即添加了对16位Unicode码的支持).具体表现为Java 1.0的IO系统是字节流

Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

Java IO流学习总结四:缓冲流-BufferedReader.BufferedWriter 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54911237 本文出自[赵彦军的博客] 在上一篇文章中Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream介绍了缓冲流中的字节流,而这一篇着重介绍缓冲流中字符流BufferedReader.BufferedWriter.

JAVA输入输出(IO)之字符流

上一篇<JAVA输入输出(IO)之字节流>介绍了JAVA字节输入输出流的一些用法,字节流一般是用于读写二进制数据的,当我们要读些字符数据的时候,如文本文件,就显得有些麻烦.所以JAVA还提供了专门用于读写字符数据的字符流. 字符输入流 java.io.Reader用于读取字符流的抽象类.子类必须实现的方法只有 read(char[], int, int) 和 close().但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能. 方法摘要 返回值 方法名 说明 abstrac

java笔记七:IO流之字节流与字节缓冲流

在I/O类库中,java.io.InputStream和java.io.OutputStream分别表示字节输入流和字节输出流,它们都是抽象类,不能实例化,数据流中的最小单位是字节,所以叫做字节流. 一.InputStream中的读取数据的方法如下: 1 .int read() 功能:读取一个字节的数据,并且返回读到得数据,如果返回-1,则表示读到输入流的末尾. 2.int read(byte[] b) 功能:从输入流中读取一定量的字节,并将其存储在字节数组b中,返回实际读取的字节数,如果返回-

io流-java中的IO流使用情况

问题描述 java中的IO流使用情况 java中有很多读取和写入文件的操作 像FileWirter Writer Reader BufferWriter 等 我一直区分不清这几个的特点,有没有大神帮忙处理下,通常什么情况使用什么比较好.各有那些优点和缺点 解决方案 你可以上网搜索哦下,很多的 解决方案二: 有的有缓冲区,有的没有,有的没有:有的可以操纵字符文件,有的可以操纵字节文件,你可以按照这个进行分类 解决方案三: 这是我自己整理的,你可以参考下http://blog.csdn.net/ev

java IO之 编码 (码表 编码 解码 转换流)

编码 什么是编码? 计算机中存储的都是二进制,但是要显示的时候,就是我们看到的却可以有中国 ,a  1 等字符 计算机中是没有存储字符的,但是我们却看到了.计算机在存储这些信息的时候,根据一个有规 则的编号,当用户输入a 有a对映的编号,就将这个编号存进计算机中这就是编码.   计算机只能识别二进制数据. 为了方便应用计算机,让它可以识别各个国家的文字.就将各个国家的文字用数字来表示, 并一一对应,形成一张表,这就是编码表. 例如: 汉字 中  有一种编码: 中字在utf 8中对映的编码   

请问:java代码通过io流怎么读取MySQL数据库生成jsp文件?谢谢!

问题描述 请问:java代码通过io流怎么读取MySQL数据库生成jsp文件?谢谢! java代码通过io流怎么读取MySQL数据库生成jsp文件 解决方案 IO读取数据库?!你确定? 最次也得是jdbc吧?要有大神实现我也涨涨姿势.. 或者jdbc读到内存再写成文件,再用IO读到内存写成jsp? 解决方案二: io流读取文件数据,数据库都是sql语句获取的,你这问法不懂, 解决方案三: 回复a877536298: <% String url = "jdbc:mysql://localho

Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream

Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54894451 本文出自[赵彦军的博客] InputStream |__FilterInputStream |__BufferedInputStream 首先抛出一个问题,有了InputStream为什么还要有BufferedInputStream? Buffere