栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【无标题】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【无标题】

字符流

字符流(Java IO的Reader和Writer)功能与InputStream和OutputStream非常类似,InputStream和OutputStream基于字节处理,而字符流(Reader和Writer)是基于字符处理。主要用于读写文本。
字符输入流—Reader类—抽象类—不能new—子类
 1.字符流相关的操作类
   字符输出流—Writer类—抽象类—不能new—子类
  1.FileWriter类
   FileWriter类的构造方法
   FileWriter(File file) 给一个File对象构造一个FileWriter对象。
   FileWriter(File file, boolean append) 给一个File对象构造一个是否允许追加FileWriter对象。
   FileWriter(String fileName) 给一个String对象构造一个FileWriter对象。
   FileWriter(String fileName, boolean append)给一个String对象构造一个是否允许追加FileWriter对象。
例如:

package com.wangxing.zyb1;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class FileWriterTest1 {
	public static void main(String[] args)throws Exception {
		//FileWriter(File file) 给一个File对象构造一个FileWriter对象。
		File file1=new File("D:"+File.separator+"Java学习"+File.separator+"JAVA文件"+File.separator+"Test.txt");
		FileWriter out1=new FileWriter(file1);
		Writer out11=new FileWriter(file1);
		//FileWriter(File file, boolean append) 给一个File对象构造一个是否允许追加FileWriter对象。 
		FileWriter out2=new FileWriter(file1,true);
		FileWriter out22=new FileWriter(file1,true);
		//FileWriter(String fileName) 给一个String对象构造一个FileWriter对象。
		String filepath="D:"+File.separator+"Java学习"+File.separator+"JAVA文件"+File.separator+"Test.txt";
		FileWriter out3=new FileWriter(filepath,true);
		Writer out33=new FileWriter(filepath,true);
		//FileWriter(String fileName, boolean append)给一个String对象构造一个是否允许追加FileWriter对象
		FileWriter out4=new FileWriter(filepath,true);
		Writer out44=new FileWriter(filepath,true);
	}
}

FileWriter类的实例方法
  void write(char[] cbuf) 写入一个字符数组。
  void write(char[] cbuf, int off, int len) 写入字符数组的一部分。
  void write(int c) 写一个字符
  void write(String str) 写一个字符串
  void write(String str, int off, int len) 写一个字符串的一部分。
  void close() 关闭流,先刷新。
  void flush() 刷新流。

package com.wangxing.zyb1;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class FileWriterTest2 {
	public static void main(String[] args)throws Exception {
		File file1=new File("D:"+File.separator+"Java学习"+File.separator+"JAVA文件"+File.separator+"Test.txt");
		FileWriter out=new FileWriter(file1,true);
		String info="hello,world";
		//void	write(char[] cbuf) 写入一个字符数组。
		//char[] cbuf=info.toCharArray();
		//out.write(cbuf);
		//out.flush();
		//out.close();
		//void	write(char[] cbuf, int off, int len) 写入字符数组的一部分。 
		//char[] cbuf---被写出的字符数组
		//int off ---被写出的字符数组的起始位置
		//int len----被写出的字符个数
		//char cbuf[]=info.toCharArray();
		//out.write(cbuf, 6, 5);
		//out.flush();
		//out.close();
		//void	write(String str) 写一个字符串 
		//out.write(info);
		//out.flush();
		//out.close();
		//void	write(String str, int off, int len) 写一个字符串的一部分。
		//String str----被写出的字符串
		//int off---被写出的字符串中具体字符元素的起始位置
		//int len---字符个数
		//out.write(info, 6, 5);
		//out.flush();
		//out.close();
		//void	write(int c) 写一个字符 
		//out.write(97);
		//out.write('A');
		char[] cbuf=info.toCharArray();
		for(char val:cbuf) {
			out.write(val);
		}
		out.flush();
		out.close();
	}
}

例如:

2.BufferedWriter类
  BufferedWriter类的构造方法
  BufferedWriter(Writer out)通过字符输出流的对象创建BufferedWriter
  BufferedWriter类的实例方法
  void newline() 写一行行分隔符。
  void write(char[] cbuf, int off, int len) 写入字符数组的一部分。
  void write(int c) 写一个字符
  void write(String s, int off, int len) 写一个字符串的一部分。
  void close() 关闭流,先刷新。
  void flush() 刷新流。

例如:

package com.wangxing.zyb2;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class BufferedWriterTest1 {
	public static void main(String[] args)throws Exception {
		//BufferedWriter类的构造方法
		//BufferedWriter(Writer  out)通过字符输出流的对象创建BufferedWriter[高级输出流]
		File file=new File("D:"+File.separator+"Java学习"+File.separator+"JAVA文件"+File.separator+"Test.txt");
		FileWriter out=new FileWriter(file,true);
		BufferedWriter writer1=new BufferedWriter(out);
		//BufferedWriter类的实例方法
		//void	newline() 写一行行分隔符。 
		String info1="hello,world";
		writer1.write(info1);
		writer1.newline();
		String info2="hello,wangxing";
		writer1.write(info2);
		writer1.flush();
		writer1.close();
		out.close();
		//void	write(char[] cbuf, int off, int len) 写入字符数组的一部分
		//void	write(int c) 写一个字符 
		//void	write(String s) 写一个字符串
		//void	write(String s, int off, int len) 写一个字符串的一部分
		//void	close() 关闭流,先刷新
		//void	flush() 刷新流
	}
}

3.OutputStreamWriter类
  OutputStreamWriter类构造方法
  OutputStreamWriter(OutputStream out)将字节输出流转换成字符输出流
例如:

package com.wangxing.zyb3;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.OutputStreamWriter;
public class OutputStreamWriterTest {
	public static void main(String[] args)throws Exception {
		//现在我们需要向文件写出一个字符串数据,如果使用字节输出流,需要将字符串数据转换成字节数组
		//File file=new File("D:"+File.separator+"Java学习"+File.separator+"JAVA文件"+File.separator+"Test.txt");
		//FileOutputStream out1=new FileOutputStream(file);
		//String info="hello.lisi";
		//out1.write(info.getBytes());
		//out1.close();
		//将字节输出流抓换成字符输出流,好一次性直接写出字符串
		File file=new File("D:"+File.separator+"Java学习"+File.separator+"JAVA文件"+File.separator+"Test.txt");
		FileOutputStream out1=new FileOutputStream(file);
		OutputStreamWriter  out=new OutputStreamWriter(out1);
		String info="hello,zhaosi";
		out.write(info);
		out.close();
		out1.close();
	}
}

字符输入流—Reader类—抽象类—不能new—子类
 1.FileReader类
  FileReader类的构造方法
  FileReader(File file) 给一个File对象构造一个FileReader对象。
  FileReader(String fileName) 给一个String对象构造一个FileReader对象。
  FileReader类的实例方法
  int read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1
  int read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1
  void close() 关闭流并释放与之相关联的任何系统资源。
例如:

package com.wangxing.zyb1;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
public class FileReaderTest1 {
	public static void main(String[] args)throws Exception{
		//FileReader类的构造方法
		//FileReader(File file) 给一个File对象构造一个FileReader对象
		File file1=new File("D:"+File.separator+"Java学习"+File.separator+"JAVA文件"+File.separator+"Test.txt");
		FileReader in1=new FileReader(file1);
		Reader in11=new FileReader(file1);
		//FileReader(String fileName) 给一个String对象构造一个FileReader对象
		String filepath="D:"+File.separator+"Java学习"+File.separator+"JAVA文件"+File.separator+"Test.txt";
		FileReader in2=new FileReader(filepath);
		Reader in22=new FileReader(filepath);
		//FileReader类的实例方法
		//int	read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1
		//int temp=in1.read();
		//System.out.println("temp=="+temp);
		//System.out.println("temp=="+((char)temp));
		//in1.close();
		//定义保存数据的数组
		//char[] chararray=new char[(int)file1.length()];
  		//定义数组下标
		//int index=0;
		//定义保存每一个读取来的数据的整数变量
		//int temp=0;
		//while((temp=in1.read())!=-1) {
		//	chararray[index]=(char)temp;
		//	index++;
		//}
		//String info=new String(chararray,0,index);
		//System.out.println(info);
		//in1.close();
		//int	read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1
		//定义保存数据的数组
		char[] chararray=new char[(int)file1.length()];
		int len=in1.read(chararray);
		String info=new String(chararray,0,len);
		System.out.println(info);
		in1.close();
		//void	close() 关闭流并释放与之相关联的任何系统资源。
	}
}

2.BufferedReader类
  BufferedReader类构造方法
  BufferedReader(Reader in)通过字符输入流对象创建一个BufferedReader
  BufferedReader类实例方法
  int read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1。int int read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1
  void close() 关闭流并释放与之相关联的任何系统资源。
  String readLine() 读一行文字。
例如:

package com.wangxing.zyb2;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class BufferedReadertest2 {
	public static void main(String[] args)throws Exception {
		//BufferedReader类构造方法
		//BufferedReader(Reader in)通过字符输入流对象创建一个BufferedReader
		File file=new File("D:"+File.separator+"Java学习"+File.separator+"JAVA文件"+File.separator+"Test.txt");
		FileReader in=new FileReader(file);
		BufferedReader reader=new BufferedReader(in);
		//BufferedReader类实例方法
		//int read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1。int	
		//int read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1
		//void close() 关闭流并释放与之相关联的任何系统资源。 
		//String readLine() 读一行文字。 
		//String info=reader.readLine();
		//System.out.println(info);
		//reader.close();
		//in.close();
		//定义保存读取来的每一行的数据
		String info=null;
		while((info=reader.readLine())!=null) {
			System.out.println(info);
		}
		reader.close();
		in.close();
	}
}


 BufferedReader和Scanner
  readLine()从文件中读取 nextLine()从键盘输入中读取
  我们能不能通过BufferedReader读取键盘输入的数据?????
  Scanner的nextLine()方法为什么可以读取键盘输入????
  因为Scanner对象在创建的时候使用了System.in,System.in默认就是键盘输入。
  只要在创建BufferedReader对象的时候,使用System.in就可以完成键盘输入。
  BufferedReader(Reader in)参数是Reader字符输入流
  System.in----InputStream类型字节输入流
  解决问题的关键就是将InputStream类型字节输入流转换成Reader字符输入流。
 3.InputStreamReader类【字节输入流转成字符输入流】
  InputStreamReader类构造方法
  InputStreamReader(InputStream in)字节输入流转成字符输入流
例如:

package com.wangxing.zyb3;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class InputStreamReaderTest {
	public static void main(String[] args)throws Exception {
		
		InputStreamReader rea=new InputStreamReader(System.in);
		BufferedReader reader=new BufferedReader(rea);
		System.out.println("请输入姓名:");
		String name=reader.readLine();
		System.out.println("name=="+name);
		reader.close();
		rea.close();
	}
}

3.反序列化—将2进制流数据转换成java对象的过程
  需要ObjectInputStream类的Object readObject()方法读取对象。
  ObjectInputStream类的构造方法
  ObjectInputStream(InputStream in)
  ObjectInputStream类的实例方法
  Object readObject() 从ObjectInputStream读取一个对象。
例如:

package com.wangxing.zyb4;
import java.io.Serializable;
public class Student implements Serializable{
	public void getStudent() {
		System.out.println("Student类的实例方法");
	}
}
package com.wangxing.zyb4;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
public class ObjectOutputStreamTest {
	public static void main(String[] args)throws Exception {
		//ObjectOutputStream的构造方法
		//ObjectOutputStream(OutputStream out) 创建一个写入指定的OutputStream的ObjectOutputStream。 
		File file=new File("D:"+File.separator+"Java学习"+File.separator+"JAVA文件"+File.separator+"Test.txt");
		OutputStream out=new FileOutputStream(file);
		ObjectOutputStream out1=new ObjectOutputStream(out);
		//实例方法
		//void writeObject(Object obj) 将指定的对象写入ObjectOutputStream
		Student student=new Student();
		out1.writeObject(student);
		out1.close();
		out.close();
	}
}
package com.wangxing.zyb4;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
public class ObjectOutputStreamTest {
	public static void main(String[] args)throws Exception {
		//ObjectOutputStream的构造方法
		//ObjectOutputStream(OutputStream out) 创建一个写入指定的OutputStream的ObjectOutputStream。 
		File file=new File("D:"+File.separator+"Java学习"+File.separator+"JAVA文件"+File.separator+"Test.txt");
		OutputStream out=new FileOutputStream(file);
		ObjectOutputStream out1=new ObjectOutputStream(out);
		//实例方法
		//void writeObject(Object obj) 将指定的对象写入ObjectOutputStream
		Student student=new Student();
		out1.writeObject(student);
		out1.close();
		out.close();
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573069.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号