Java输入输出流2

来源:互联网 发布:二战美国重型卡车数据 编辑:程序博客网 时间:2024/05/17 19:19

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码值110System.out.println(bis.read());//读取的是文件helloworld里的第二个字节i的ASCII码值105bis.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





0 0
原创粉丝点击