您的位置:首页 > 编程语言 > Java开发

java标准输入输出流的概述

2019-01-13 21:24 106 查看

OutputStreamWriter的用法
需求:读取项目根目录下的(某个文件),并输出到命令行(三种方法)

public class OutputStreamWriterDemo {
public static void main(String[] args) throws IOException {
//高效
// method01();
// method02();
// 创建输入流
BufferedReader br = new BufferedReader(new FileReader("RecurrenceDemo.java"));
// 创建输出流
Writer w = new OutputStreamWriter(System.out);// 多态,父类型引用指向子类
BufferedWriter bw=new BufferedWriter(w);
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
// 关闭资源
br.close();
bw.close();
}

private static void method02() throws FileNotFoundException, IOException {
// 创建输入流
BufferedReader br = new BufferedReader(new FileReader("RecurrenceDemo.java"));
// 创建输出流
Writer w = new OutputStreamWriter(System.out);// 多态,父类型引用指向子类
String line;
while ((line = br.readLine()) != null) {
w.write(line);
w.write("\r\n");
}
// 关闭资源
br.close();
w.close();
}

private static void method01() throws FileNotFoundException, IOException {
// 创建输入流
BufferedReader br = new BufferedReader(new FileReader("RecurrenceDemo.java"));
// 创建输出流
OutputStream os = System.out;
String line;
while ((line = br.readLine()) != null) {
os.write(line.getBytes());
os.write("\r\n".getBytes());
}
// 关闭资源
br.close();
os.close();
}

}

InputStreamReader用法
需求:读取键盘录入的数据,并输出到项目根目录下的a.txt文件中

public static void main(String[] args) throws IOException {
//创建输入流
InputStream is = System.in;
//创建输出流
FileWriter fw=new FileWriter("a.txt");
//读写数据
byte[] bys=new byte[1024];
int len;
while((len=is.read(bys))!=-1){
fw.write(new String(bys,0,len));
fw.flush();
}
//释放资源
is.close();
fw.close();
}

转换流(两种方法)

public static void main(String[] args) throws IOException {
// method01();
// 创建输入流
InputStream is = System.in;
Reader r = new InputStreamReader(is);
// 创建输出流
FileWriter fw = new FileWriter("a.txt");
//读写数据
char[] chs=new char[1024];
int len;
while((len=r.read(chs))!=-1){
fw.write(chs,0,len);
fw.flush();
}
// 释放资源
is.close();
fw.close();

}

private static void method01() throws IOException {
// 创建输入流
InputStream is = System.in;
Reader r = new InputStreamReader(is);
// 创建输出流
FileWriter fw = new FileWriter("a.txt");
// 读写数据
byte[] bys = new byte[1024];
int len;
while ((len = is.read(bys)) != -1) {
fw.write(new String(bys, 0, len));
fw.flush();
}
// 释放资源
is.close();
fw.close();
}

打印流:
PrintStream
PrintWriter
可以自动换行,println()
不能输出字节,但可以输出其他任意类型
通过某些配置,可以实现自动刷新(只有在调用println、printf或format才有用)
可以把字节输出流转换成字符输出流
注意:只能输出不能输入

public static void main(String[] args) throws IOException {
//创建打印流对象
PrintWriter pw=new PrintWriter("b.txt");
//写出数据
pw.write("hello");
pw.write("world");
pw.write("java");
//释放资源
pw.close();
}

打印流的特有功能:
自动换行:使用方法println()实现自动换行
自动刷新:创建PrintWriter对象是启动自动刷新开关,并且使用println等3个方法可以实现自动刷新
注意:创建FileWriter对象时boolean参数是是否追加,而创建打印流对象boolean类型参数是是否自动刷新

public static void main(String[] args) throws IOException {
// method01();
// 创建打印流对象
//PrintWriter pw = new PrintWriter("c.txt");
PrintWriter pw = new PrintWriter(new FileWriter("d.txt",true),true);
pw.println("hello");
pw.println("world");
pw.println("java");
//释放资源
pw.close();

}

private static void method01() throws FileNotFoundException {
// 创建打印流对象
PrintWriter pw = new PrintWriter("c.txt");
pw.println("hello");
pw.println("world");
pw.println("java");
// 释放资源
pw.close();
}

使用打印流复制文本文件

public static void main(String[] args) throws IOException {
//创建输入流对象
BufferedReader br=new BufferedReader(new FileReader("RecurrenceDemo.java"));
//创建打印流对象
PrintWriter pw=new PrintWriter(new FileWriter("g:\\RecurrenceDemo.java"),true);
String line;
while((line=br.readLine())!=null){
pw.println(line);
}
//释放资源
br.close();
pw.close();
}

对象操作流:可以读写任意类型的对象
对象输出流:ObjectInputStream
writeObject
ObjectInputStream(InputStream in)
对象输入流:ObjectOutPutStream
readObject
ObjectOutputStream(OutputStream out)

public static void main(String[] args) throws IOException, ClassNotFoundException {
//method01();
//创建对象输入流的对象
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("s.txt"));
/*//读取对象
Object obj = ois.readObject();
System.out.println(obj);
Object obj2 = ois.readObject();
System.out.println(obj2);*/
try {
while(true){
Object obj=ois.readObject();
System.out.println(obj);
}
} catch (EOFException e) {
System.out.println("读到了文件的末尾");
}
}

private static void method01() throws IOException, FileNotFoundException {
//创建对象输入流的对象
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("s.txt"));
//创建学生对象
Student s=new Student();
s.setName("张三");
s.setAge(18);
Student s2=new Student();
s2.setName("李四");
s2.setAge(23);
//写出学生对象
oos.writeObject(s);
oos.writeObject(s2);
//释放资源
oos.close();
}

Properties:Properties类表示了一个持久的属性集,属性列表中每一个键及其对应值都是一个字符串
构造方法: Properties()
Properties:两种遍历方式

public static void main(String[] args) {
//创建属性列表对象
Properties prop=new Properties();
//添加映射关系
prop.put("itheima01", "张三");
prop.put("itheima02", "李四");
prop.put("itheima03", "王五");
//遍历属性列表
//获取所有的key,通过key获取value

/*Set<Object> keySet = prop.keySet();
for (Object object : keySet) {
Object object2 = prop.get(object);
System.out.println(object+"---"+object2);
}*/
//获取所有的结婚证对象
Set<Entry<Object,Object>> entrySet = prop.entrySet();
for (Entry<Object, Object> entry : entrySet) {
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key+"---"+value);
}

}

Properties和Io流结合的功能:
void list(PrintWriter out)
void load(Reader reader)
void store(Writer writer,String comments);

public static void main(String[] args) throws IOException {
// method01();
// method2();
// 创建属性列表
// 创建属性列表对象
Properties prop = new Properties();
// 添加映射关系
prop.setProperty("heima001", "张三");
prop.setProperty("heima002", "李四");
prop.setProperty("heima003", "王五");
//创建输出流对象
FileWriter fw=new FileWriter("s.txt");
prop.store(fw, null);
//释放资源
fw.close();
}

private static void method2() throws FileNotFoundException, IOException {
// 创建属性列表对象
Properties prop = new Properties();
// 创建一个输入流对象
FileReader fr = new FileReader("b.txt");
prop.load(fr);
// 释放资源
fr.close();
System.out.println(prop);
}

private static void method01() throws FileNotFoundException {
// 创建属性列表对象
Properties prop = new Properties();
// 添加映射关系
prop.setProperty("heima001", "张三");
prop.setProperty("heima002", "李四");
prop.setProperty("heima003", "王五");
// 创建打印流对象
PrintWriter out = new PrintWriter("b.txt");

prop.list(out);
// 释放资源
out.close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: