1.字符流相关操作
1.字符输出流
字符输出流---Write类---抽象类---不能new---子类
1.FileWrite类
1. FileWrite类的构造方法:
1.FileWrite(File file)---给一个File对象构造一个FileWrite对象
2.FileWrite(File file,boolean append)---给File对象构造一个是否允许追加FileWrite对象
3.FileWrite(String name)---给String对象构造一个FileWrite对象
4.FileWrite(String name,boolean append)---给String对象构造一个是否允许追加的FileWrite对象
例如:
package com.object.test1;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class FileWriteClass {
public static void main(String[] args) throws IOException {
//FileWriter类的构造方法
//FileWriter(File file) 给一个File对象构造一个FileWriter对象。
String fileName="E:"+File.separator+"BaiduNetdiskDownload"+File.separator+"test1.txt";
File file=new File(fileName);
FileWriter filew=new FileWriter(file);
Writer filew11=new FileWriter(file);
//FileWriter(File file, boolean append) 给一个File对象构造一个是否允许追加FileWriter对象。
FileWriter filew2=new FileWriter(file,true);
Writer filew22=new FileWriter(file,true);
//FileWriter(String fileName) 给一个String对象构造一个FileWriter对象。
FileWriter filew3=new FileWriter(fileName);
Writer filew33=new FileWriter(fileName);
//FileWriter(String fileName, boolean append)给一个String对象构造一个是否允许追加FileWriter对象。
FileWriter filew4=new FileWriter(fileName, true);
}
}
2.FileWrite类实例方法
void write(char[] cbuf)---写入一个字符数组
void write(char[] cubf,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.object.test1;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class FileWriteClass2 {
public static void main(String[] args) throws IOException {
File file=new File("E:"+File.separator+"BaiduNetdiskDownload"+File.separator+"test1.txt");
FileWriter out=new FileWriter(file);
String info="hello,word";
//FileWriter类的实例方法
//void write(char[] cbuf) 写入一个字符数组。
char cbuf[]=info.toCharArray();
/*
out.write(cbuf);
//void flush() 刷新流。
out.flush();
//void close() 关闭流,先刷新。
out.close();
*/
//void write(char[] cbuf, int off, int len) 写入字符数组的一部分。
/*
out.write(cbuf, 0, 5);
out.flush();
out.close();
*/
//void write(int c) 写一个字符
/*
out.write(97);
out.flush();
out.close();
*/
//void write(String str) 写一个字符串
/*
out.write(info);
out.flush();
out.close();
*/
//void write(String str, int off, int len) 写一个字符串的一部分。
/*
out.write(info, 0, 5);
out.flush();
out.close();
*/
for(char ch:cbuf){
out.write(ch);
}
out.flush();
out.close();
}
}
2.BufferedWrite类
1. BufferedWrite()类的构造方法
BufferedWrite(Write out)通过字符输出流对象创建BufferedWrite
2.BufferedWrite类实例方法
void newLine()---写一行分隔符
void write(char[],int off,int len)--写入字符数组的一部分。
void write(int c)---写入一个字符
void write(String s,int off,int len)---写入一个字符串的一部分
void flush()---刷新流
void close()---关闭流,先刷新
例如:
package com.object.test2;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class BufferedWriteClass {
public static void main(String[] args) throws IOException {
//BufferedWriter(Writer out)通过字符输出流的对象创建BufferedWriter
File file=new File("E:"+File.separator+"BaiduNetdiskDownload"+File.separator+"test1.txt");
FileWriter out=new FileWriter(file);
BufferedWriter bufferout=new BufferedWriter(out);
//void newLine() 写一行行分隔符。
/*
String info="hello,world!";
bufferout.write(info);
bufferout.newLine();
String info2="你好,世界";
bufferout.write(info2);
bufferout.flush();
bufferout.close();
*/
//void write(char[] cbuf, int off, int len) 写入字符数组的一部分。
/*
String info="hello,world!";
char cbuf[]=info.toCharArray();
bufferout.write(cbuf, 0, 5);
bufferout.flush();
bufferout.close();
*/
//void write(int c) 写一个字符
/*
bufferout.write(98);
bufferout.flush();
bufferout.close();
*/
//void write(String s, int off, int len) 写一个字符串的一部分。
String info="hello,world!";
bufferout.write(info, 0, 5);
bufferout.flush();
bufferout.close();
//void close() 关闭流,先刷新。
//void flush() 刷新流。
}
}
3.OutputStreamWriter类
OutputStreamWriter类构造方法
OutputStreamWrite(OutputStream out)---将字节输出流转换成字符输出流
package com.object.test3;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class OutputStreamWriterClass {
public static void main(String[] args) throws IOException {
//使用字节输出流,需要将字符串数据转换成字节数组
/*
File file=new File("E:"+File.separator+"BaiduNetdiskDownload"+File.separator+"test2.txt");
FileOutputStream out=new FileOutputStream(file);
String info="hello,world!";
out.write(info.getBytes());
out.close();
*/
// 将字节输出流转换成字符输出流
File file=new File("E:"+File.separator+"BaiduNetdiskDownload"+File.separator+"test2.txt");
FileOutputStream out=new FileOutputStream(file);
OutputStreamWriter wrt=new OutputStreamWriter(out);
String info="hello,world!";
wrt.write(info);
wrt.flush();
out.close();
wrt.close();
}
}
2.字符输入流
1.FileReader类
1.FileReader类构造方法:
1.FileReader(File file) 给一个File对象构造一个FileReader对象。
2.FileReader(String fileName) 给一个String对象构造一个FileReader对象
2. FileReader类实例方法
1.int read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1
2.int read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1
3.void close() 关闭流并释放与之相关联的任何系统资源。
package com.object.test1;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.net.Inet4Address;
public class FileReaderClass3 {
public static void main(String[] args) throws IOException {
//FileReader类的构造方法
//FileReader(File file) 给一个File对象构造一个FileReader对象。
File file1=new File("E:"+File.separator+"BaiduNetdiskDownload"+File.separator+"test1.txt");
FileReader in1=new FileReader(file1);
Reader in11=new FileReader(file1);
/*
//FileReader(String fileName) 给一个String对象构造一个FileReader对象
String fileName="E:"+File.separator+"BaiduNetdiskDownload"+File.separator+"test1.txt";
FileReader in2=new FileReader(fileName);
*/
//int read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1
/*int temp=in1.read();
System.out.println(temp);
System.out.println((char)temp);
in1.close();
*/
/*
//定义保存数据的数组
char chararry[]=new char[((int)file1.length())];
//定义数组下标
int index=0;
//定义保存每一个读取来的数据的整数变量值
int temp=0;
while((temp=in1.read())!=-1){
chararry[index]=(char)temp;
index++;
}
String info=new String(chararry,0,index);
System.out.println(info);
in1.close();
*/
//int read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1
char chararry[]=new char[((int)file1.length())];
int len=in1.read(chararry);
String info=new String(chararry,0,len);
System.out.println(info);
in1.close();
//void close() 关闭流并释放与之相关联的任何系统资源。
}
}
2.BufferReader类
1.BufferReader类构造方法
BufferedReader(Reader in)通过字符输入流对象创建一个BufferedReader
2. BufferReader实例方法
1.int read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1。
2.int read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1
3.String readLine() 读一行文字。
4.void close() 关闭流并释放与之相关联的任何系统资源。
package com.object.test2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
public class BufferedReaderClass {
public static void main(String[] args) throws IOException {
//BufferedReader(Reader in)通过字符输入流对象创建一个BufferedReader
File file1=new File("E:"+File.separator+"BaiduNetdiskDownload"+File.separator+"test1.txt");
FileReader in=new FileReader(file1);
BufferedReader buff=new BufferedReader(in);
//int read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1。
//int read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1
//String readLine() 读一行文字。
/*
String info=buff.readLine();
System.out.println(info);
buff.close();
in.close();
*/
//定义保存读取的每一行数据
String info=null;
while((info=buff.readLine())!=null){
System.out.println(info);
}
in.close();
buff.close();
//void close() 关闭流并释放与之相关联的任何系统资源。
}
}
BufferedReader---readLine()从文件中读取,只要在创建BufferedReader对象的时候,使用System.in就可以完成键盘输入。BufferedReader(Reader in)参数是Reader字符输入流
Scanner--- nextLine()从键盘输入中读取,Scanner对象在创建的时候使用了System.in,System.in默认就是键盘输入。System.in----InputStream类型字节输入流,解决问题的关键就是将InputStream类型字节输入流转换成Reader字符输入流。
3.InputStreamReader类【字节输入流转成字符输入流】
InputStreamReader类构造方法
InputStreamReader(InputStream in)字节输入流转成字符输入流
package com.object.test3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputStreamReaderClass {
public static void main(String[] args) throws IOException {
//InputStreamReader(InputStream in)字节输入流转成字符输入流
InputStreamReader red=new InputStreamReader(System.in);
BufferedReader buff=new BufferedReader(red);
System.out.println("请输入姓名");
String name=buff.readLine();
System.out.println("name--"+name);
red.close();
buff.close();
}
}