字节流字符流

Posted boss-h

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节流字符流相关的知识,希望对你有一定的参考价值。

字节流

字节输出流OutputStream:

OutputStream此抽象类是表示输出字节流的所有类的超类

FileOutputStream类:

 

public static void main(String[] args) throws IOException
  //创建字节输出流对象
  //构造方法指定文件地址时,如果存在则覆盖,如果不存在则创建。
  FileOutputStream fos=new FileOutputStream("D:\\java\\d.txt");
  /*//向文件中写入一个字节write(int b) ASCII码
  //0-48
  //a-97
  //A-65
  fos.write(49);
  fos.write(48);
  fos.write(48);*/
  //向文件中写入一个字节数组
  byte[] bytes=-66,-67,-68,-69;
  //fos.write(bytes);
  fos.write(bytes, 2, 2);
  //释放资源
  fos.close();

 

给文件中续写和换行

public static void main(String[] args) throws IOException
  //创建字节输出流
  FileOutputStream fos=new FileOutputStream("D:\\java\\d.txt",true);
  //字符串-》字符数组
  fos.write("abc".getBytes());
  fos.write("\r\n换行了".getBytes());
  //释放资源
  fos.close();

 

异常的处理

public static void main(String[] args)
  FileOutputStream fos=null;
  try
    fos=new FileOutputStream("D:\\java\\d.txt",true);
    fos.write("abc".getBytes());
   catch (IOException e)
    e.printStackTrace();
  finally

  try
  fos.close();
   catch (IOException e)
    e.printStackTrace();
    
  

 

 

字节输入流InputStream

public static void main(String[] args) throws IOException
  //创建字节输入流(明确从哪个文件中读取数据)
  FileInputStream fis=new FileInputStream("D:\\java\\d.txt");
  //一个字节一个字节读取文件所有数据
  int len=0;
  while((len=fis.read())!=-1)
  System.out.println((char)len);

  /*System.out.println((char)fis.read());
  System.out.println((char)fis.read());
  System.out.println((char)fis.read());
  System.out.println((char)fis.read());
  System.out.println((char)fis.read());
  System.out.println(fis.read());*/
  //释放资源
  fis.close();

public static void main(String[] args) throws IOException
  //明确数据源
  FileInputStream fis=new FileInputStream("D:\\java\\d.txt");
  //创建字节数组
  byte[] bytes=new byte[2];
  /*//读取一个字节数组
  //实际读取的有效字节
  System.out.println(fis.read(bytes));
  //字节数组转字符串
  System.out.println(new String(bytes));*/
  int len=0;
  while((len=fis.read(bytes))!=-1)
    System.out.println(new String(bytes,0,len));
  
  //释放资源
  fis.close();

 

字符流

 

字符编码表:

ascii   

iso-8859-1 

GB2312

GBK

GB18030

unicode

UTF-8

常见的编码 GBK  UTF-8  ISO-8859-1

文字--->(数字) :编码。 “abc”.getBytes()  byte[]

(数字)--->文字  : 解码。 byte[] b=97,98,99  new String(b,0,len) 

FileReader类:

 

public static void main(String[] args) throws IOException
  //创建字符输入流
  FileReader fr=new FileReader("D:\\java\\d.txt");
  int len=0;
  while((len=fr.read())!=-1)
  System.out.println((char)len);
  
  //释放资源
  fr.close();

public static void main(String[] args) throws IOException
  //创建字符输入流
  FileReader fr=new FileReader("D:\\java\\d.txt");
  char[] c=new char[1024];
  int len=0;
  while((len=fr.read(c))!=-1)
  System.out.println(new String(c,0,len));
  
  fr.close();

public static void main(String[] args) throws IOException
  //创建字符输出流
  FileWriter fw=new FileWriter("D:\\java\\d.txt");
  //写入一个字符
  fw.write(100);
  fw.flush();
  //写入一个字符串
  fw.write("你好呀");
  //写入一个字符数组
  char[] c=‘a‘,‘1‘,‘r‘;
  fw.write(c);
  //释放资源
  //fw.close();

public static void main(String[] args) throws IOException
  //明确数据源
  FileReader fr=new FileReader("D:\\java\\d.txt");
  //明确目的地
  FileWriter fw=new FileWriter("D:\\java\\z.txt");
  int len=0;
  //开始复制
  Date d=new Date();
  System.out.println(d.getTime());
  while((len=fr.read())!=-1)
  fw.write(len);
  fw.flush();
  
  //释放资源
  fr.close();
  fw.close();
  System.out.println(d.getTime());

 

以上是关于字节流字符流的主要内容,如果未能解决你的问题,请参考以下文章

字节流 字符流 输入流 输出流

字节流和字符流

字符流字节流节点流处理流详释

字节流字符流中

字符流和字节流的区别

java里字符流 字节流和序列化的区别?