Java程序中的输入输出操作都是以流的形式进行的,如果数据的流向是从程序到设备则是输出流,否则为输入流。
在读字符的时候用字符流,如文本文件、XML等。在读取二进制的时候用字节流。如RAR、EXE等不是文本以外的文件(图片)。以Buffered开头的流只是增加了缓冲区,以提高读取效率。点击打开链接
<span style="font-size:18px;">package cn.hpu.edu.hlj;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Test3 {
public static void main(String[] args) {
try{
FileInputStream fis = new FileInputStream("d://helloworld.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
int c =0;
System.out.println(bis.read());//读取的是文件helloworld里的第一个字节n的ASCII码值110
System.out.println(bis.read());//读取的是文件helloworld里的第二个字节i的ASCII码值105
bis.mark(10);//找到文件中的第十个字节(在helloworld文件中第十个字节整好是空格)
for(int i=0;i<10&((c=bis.read())!=-1);i++){
System.out.println((char)c+"");
}
System.out.println();
bis.reset();//将此流重新定位到最后一次对此输入流调用mark 方法时的位置(返回到开始mark的那个空格)
for(int i=0;i<10&((c=bis.read())!=-1);i++){
System.out.println(c+"");
}
bis.close();
}catch(Exception e){
e.printStackTrace();
}
}
}</span>
<span style="font-size:18px;">其中:helloworld.txt中的内容为:ni shi wo de xiao a xiao ping guo zen me ai ni dou bu xian duo hong hong de xiao jiu wo wen nuan le wo de xin </span>
<span style="font-size:18px;">运行结果:</span>
110 (
读取的是文件helloworld里的第一个字节n的ASCII码值110)
105 ( 读取的是文件helloworld里的第二个字节i的ASCII码值105)
s
h
i
w
o
d
e
32 (s前面那个空格的ASCII码值)
115 (s的ASCII码值)
104 (h的ASCII码值)
105 (i的ASCII码值)
32 (空格的ASCII码值)
119 (w的ASCII码值)
111 (o的ASCII码值)
32 (空格的ASCII码值)
100 (d的ASCII码值)
101 (e的ASCII码值)
代码块二:
public static void main(String[] args){
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("d://java//test//char.txt"));
osw.write("haohaoxuexi tiantianxiangshang");
System.out.println(osw.getEncoding());//获取编码形式
osw.close();
osw = new OutputStreamWriter(new FileOutputStream("d://java//test//char.txt",true),"ISO8859_1");//参数true 代表在char.txt原有内容的基础上继续添加新的内容。若不写true的话,新的内容将会覆盖原来char.txt文件中的内容。
osw.write("haohaoxuexi tiantianxiangshang");
osw.flush();//将缓冲区中的内容完全给写出来
System.out.println(osw.getEncoding());
}
运行结果为:
GBK
ISO8859_1