IO

来源:互联网 发布:网络大电影 罪 上映 编辑:程序博客网 时间:2024/06/11 16:14

在Java中的流主要分为两种:字节流和字符流。

InputStream抽象类与OutputStream抽象类分别是字节输入流和字节输出流的基类。(操作单位byte)

1、使用字节流类FileInputStream读文本文件

IO

例如:

FileInputStream fis = new FileInputStream(test.file);
  intdata;   //用来接收读取到得数据
  System.out.println("当前文本文档中可读取的字节数:"+fis.available());
  //如果不循环只能读取到第一个字节的值
  while((data=fis.read())!=-1){ //循环读取,条件读到文件的结尾
   char c =(char)data;
   System.out.print(c+"");
  }
  //将字节文件内容转换成字符串,然后查看文件内容
  fis.close();  //关闭流

2、使用FileOutputStream写文本文件

IO

例如:

  FileOutputStream fos = newFileOutputStream(file);
  System.out.println("请输入文本内容,输入end结束");
  Scanner input = newScanner(System.in);
  String text;
  while (1 == 1) {
   text =input.next();
   byte[] text1= text.getBytes(); // 将字符串转换成字节数组
   if(text.equals("end")) { // 当用户输入end的时候跳出循环
    break;
   }
   fos.write(text1);
  }
  fos.close();

 

Reader抽象类和Writer抽象类分别是字符输入流和字节输出流的基类。(操作单位char)
IO

IO

利用字符流类FileReader和BufferedReader读文本文件

1、FileReader类

  FileReader类以字符为单位读取文本文件。

2、BufferedReader类

  BufferedReader类可以从指定的文本文件以字符串为单位读取数据,它有一个带有默认长度的缓冲区,可以提高读取效率。

例如:

//用FileReader读取数据
 public static void main(String[] args) throwsIOException {
  FileReader fr = newFileReader("G:\\homework.txt");
  BufferedReader br = newBufferedReader(fr);
  //读取文本中的第一行
  String line =br.readLine();
  while(line!=null){
   System.out.println(line);
   line=br.readLine();
  }
  br.close();
  fr.close();
 }

利用字符流类FileWriter和BufferedReader写文本文件

1、FileWriter类

  FileWriter类以字符为单位向文本文件写入数据。

2、BufferedReader类

   例如:  

FileWriter fw = new FileWriter("G:\\homework.txt");
  //BufferedWriter会覆盖原先文本中的原有内容
  BufferedWriter bw = newBufferedWriter(fw);
  bw.write("大家好~~");
  bw.newLine();  //换行
  bw.write("哈哈,我要修改内容了~~");
  bw.newLine();
  bw.write("哈哈,我修改完了~~");
  //清空缓冲区
  bw.flush();
  bw.close();
  fw.close();

 

二进制文件的读写

利用字节流DataInputStream读二进制文件

利用字节流类DataOutputStream写二进制文件

例如:

  FileOutputStream fos = newFileOutputStream("G:\\S1.txt");
  BufferedOutputStream bos = newBufferedOutputStream(fos);
  DataOutputStream dos = newDataOutputStream(bos);
  dos.writeInt(1);
  dos.writeLong(2);
  dos.writeChar('A');
  dos.writeUTF("hello");
  dos.close();
  bos.close();
  fos.close();
  System.out.println("dsfhgdsfghiu完成文件写入erwhtgiutegsdtfg");
  FileInputStream fis = newFileInputStream("G:\\S1.txt");
  BufferedInputStream bis = newBufferedInputStream(fis);
  DataInputStream dis = newDataInputStream(bis);
  // 先进先出 ,否则就会乱码
  System.out.println(dis.readInt());
  System.out.println(dis.readLong());
  System.out.println(dis.readChar());
  System.out.println(dis.readUTF());
  dis.close();
  bis.close();
  fis.close();

 

字节流和字符流的转换

1、InputStreamReader类

  InputStreamReader类使用指定的字符集从字节输入流中读取字符。

2、OutputStreamWriter类

  OutputStreamWriter类使用指定的字符集将字符以字节形式写入到字节输出流中。

0 0
原创粉丝点击