10-23学习笔记

来源:互联网 发布:淘宝提醒买家付款 编辑:程序博客网 时间:2024/05/01 20:19

今天的知识点比较简单,但是很重要,是IO技术的基础。IO技术是专门用来处理设备上的数据,用于设备间的数据传输。IO包括Input(输入、写)和Output(输出、读取),而流按照操作数据可以分为字节流和字符流,字节流是可以用来处理所有的数据,而字符流是字节流和编码表组合的,专门用来处理文字数据的流。

IO流体系包括四大体系,字节流:InputStream(字节输入流)、OutputStream(字节输出流);字符流:Reader(字符输入流)、Writer(字符输出流)。这四大类都是抽象类,调用方法的时候都是通过他们的子类调用。

如何将一个数据写入到硬盘的文本文件?第一步:首先是通过FileWriter类创建一个对象,然后通过构造器指定文件;第二步:调用write方法,将字符串写入到内部的缓冲区;第三步:调用flush方法将缓冲区的数据刷新到目的地文件;第四步:调用close方法关闭流,这个方法只能使用一次,在调用这个方法的时候会自动刷新一次。//如果在构造器中加入true,可以实现不覆盖并且续写。

如何从一个文本文件中读取数据?第一步:创建FileReader对象,并且让流对象关联指定文件;第二步:通过对象调用read方法读取数据,返回的是int类型;第三步:close方法关闭流。************还有第二个方式,就是通过数组,定义一个数组char[] ch=new char[1024];将读取到的字符存入到数组中,然后将数组转为字符串输出即可,返回值是读取的字符个数。

在读和写的时候,要注意都会抛异常,所以我们必须处理异常,两者创造对象的时候都先赋值为null,然后通过try catch创建对象。然后一定要注意将close方法放入finally中,因为close方法必须要被执行到。
//写入
import java.io.*;
class WriteDemo
{
//定义一个final量得到系统换行属性
private static final String LINE_SEPARATOR=System.getProperty("line.separator");
public static void main(String[] args)
{
  //1.首先是创建一个FileWriter的对象
  FileWriter fw=null;
  try
  {
   //如果在创建对象时,构造函数时传入一个true代表文件不覆盖可以续写
   fw=new FileWriter("Demo1.txt");
   //使用write方法将字符串写入到内部的缓冲区
   fw.write("acvb"+LINE_SEPARATOR);//换行
   fw.write("敖");
  //使用flush方法将缓冲区中的数据刷新到目的地文件中
  fw.flush();
  }
  catch (IOException e)
  {
   System.out.println(e.toString());
  }
  finally{
   //使用close方法关闭流,关闭前会自动刷新一次。
   if (fw!=null)
   {
    try
    {
     fw.close();
    }
    catch (IOException e)
    {
     throw new RuntimeException("关闭失败");
    }
   }
  
  }
}
}

//读取
import java.io.*;
class ReadDemo
{
public static void main(String[] args)
{
  //读取的第一种方式
  /*
  //首先创建一个流对象。将该对象与指定的源文件关联
  FileReader fr=null;
  try
  {
   fr=new FileReader("Demo1.txt");
   //然后调用流对象的读取方法对数据进行获取
   int c=0;
   while ((c=fr.read())!=-1)
   {
    System.out.println((char)(c));
   }
  }
  catch (IOException e)
  {
   System.out.println(e.toString());
  }
  finally{
   if (fr!=null)
   {
    try
    {
     fr.close();
    }
    catch (IOException e)
    {
     throw new RuntimeException("出问题了");
    }
   }
  
  }
  */
  //读取的第二种方式
  FileReader fr=null;
  char[] buf=new char[1024];
  try
  {
   fr=new FileReader("Demo1.txt");
   //然后调用流对象的读取方法对数据进行获取
   int c=0;
   while ((c=fr.read(buf))!=-1)
   {
    System.out.println(new String(buf));
   }
  }
  catch (IOException e)
  {
   System.out.println(e.toString());
  }
  finally{
   if (fr!=null)
   {
    try
    {
     fr.close();
    }
    catch (IOException e)
    {
     throw new RuntimeException("出问题了");
    }
   }
  
  }
}
}