字符缓冲流

//构造方法
BufferedWriter(Writer out);
BufferedReader(Reader in);
相关应用:
import java.io.*;

public class Main{
public static void main(String[] args) throws IOException {
BufferedWriter bw=new BufferedWriter(new FileWriter("myCharStream\\bw.txt")); bw.write("hello\r\n");
bw.write("world\r\n"); bw.close();
}
} import java.io.*; public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new FileReader("myCharStream\\bw.txt")); int ch;
while((ch=br.read())!=-1){
System.out.println(ch);
} char[] cc=new char[1024];
int len;
while((len=br.read(cc))!=-1){
System.out.println(new String(cc,0,len));
}
br.close();
}
}
案例:复制Java文件(字符缓冲流改进版)
import java.io.*;

public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new FileReader("myCharStream\\ConversionStreamDemo.java"));
BufferedWriter bw=new BufferedWriter(new FileWriter("myCharStream\\Cpoy.java")); char[] by=new char[1024];
int len;
while((len=br.read(by))!=-1){
bw.write(new String(by,0,len));
} bw.close();
br.close();
}
}
字符缓冲流的特有功能
BufferedWriter:void newLine();//写一行行分隔符,由系统属性定义
BufferedReader:public String readLine();//读一行文字,不包括终止字符,到达末尾,为null
相关应用:
//BufferedWriter
import java.io.*; public class Main{
public static void main(String[] args) throws IOException {
BufferedWriter bw=new BufferedWriter(new FileWriter("myCharStream\\bw.txt")); for(int i=0;i<10;i++){
bw.write("hello"+i);
bw.newLine();//直接换行
bw.flush();//刷新流
} bw.close();
}
} //BufferedReader
import java.io.*; public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new FileReader("myCharStream\\bw.txt")); String line;
while((line=br.readLine())!=null){//只读内容,不读换行符号
System.out.println(line);
} br.close();
}
}
案例:复制Java文件(字符缓冲流特有功能改进版)
import java.io.*;

public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new FileReader("myCharStream\\ConversionStreamDemo.java"));
BufferedWriter bw=new BufferedWriter(new FileWriter("myCharStream\\Copy.java")); String line;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
} bw.close();
br.close(); }
}
IO流小结

字节流的分类、字节输入流、字节输出流;

字符流的分类、字符输入流、字符输出流;

案例:集合到文件
//即将ArrayList集合中的字符串数据写入到文本文件
import java.util.*;
import java.io.*; public class Main{
public static void main(String[] args) throws IOException {
ArrayList<String> arr=new ArrayList<String>();
arr.add("hello");
arr.add("world");
arr.add("java"); BufferedWriter bw=new BufferedWriter(new FileWriter("myCharStream\\bw.txt")); for(String s:arr){
bw.write(s);
bw.newLine();
bw.flush();
} bw.close(); }
} //改进版
import java.util.*;
import java.io.*;
//Student.java已省略
public class Main{
public static void main(String[] args) throws IOException {
ArrayList<Student> arr=new ArrayList<Student>(); Student s1=new Student("lili",19);
Student s2=new Student("wangwu",20);
Student s3=new Student("lisi",18); arr.add(s1);
arr.add(s2);
arr.add(s3); BufferedWriter bw=new BufferedWriter(new FileWriter("myCharStream\\java.txt")); for(Student s:arr){
StringBuilder sb=new StringBuilder();
sb.append(s.getName()).append(",").append(s.getAge()); bw.write(sb.toString());
bw.newLine();
bw.flush();
} bw.close(); }
} //数据排序改进版
import java.util.*;
import java.io.*; public class Main{
public static void main(String[] args) throws IOException {
TreeSet<Student> ts=new TreeSet<Student>(new Comparator<Student>(){ public int compare(Student s1,Student s2){
int num=s2.getYuwen()+s2.getMath()-s1.getYuwen()-s1.getMath();
int num2=num==0?s1.getYuwen()-s2.getYuwen():num;
int num3=num2==0?s1.getMath()-s2.getMath():num2;
int num4=num3==0?s1.getName().compareTo(s2.getName()):num3;
return num4;
}
}); for(int i=0;i<5;i++){
Scanner sc=new Scanner(System.in);
System.out.println("请录入第"+(i+1)+"学生的信息,");
System.out.println("姓名:");
String name=sc.nextLine();
System.out.println("语文成绩:");
int yuwen=sc.nextInt();
System.out.println("数学成绩:");
int math=sc.nextInt(); Student s=new Student();
s.setName(name);
s.setYuwen(yuwen);
s.setMath(math); ts.add(s);
} BufferedWriter bw=new BufferedWriter(new FileWriter("myCharStream\\student.txt")); for(Student s:ts){
StringBuilder sb=new StringBuilder();
sb.append(s.getName()).append(",").append(s.getYuwen()).append(",").append(s.getMath());
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
bw.close();
}
}
案例:文件到集合
//即将文本文件中的数据读取到集合中,并遍历集合
import java.util.*;
import java.io.*; public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new FileReader("myCharStream\\bw.txt")); ArrayList<String> arr=new ArrayList<String>(); String line;
while((line=br.readLine())!=null){
arr.add(line);
}
br.close(); for(String s:arr){
System.out.println(s);
}
}
} //改进版
import java.util.*;
import java.io.*;
//Student.java已省略
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new FileReader("myCharStream\\java.txt")); ArrayList<Student> arr=new ArrayList<Student>(); String line;
while((line=br.readLine())!=null){
//将里面的每一个元素取出来赋值给学生对象的成员变量值
String[] strarr=line.split(",");
Student s=new Student();
s.setName(strarr[0]);
s.setAge(Integer.parseInt(strarr[1]));
//添加到集合
arr.add(s);
} br.close(); for(Student s:arr){
System.out.println(s.getName()+","+s.getAge());
}
}
}
案例:点名器
import java.util.*;
import java.io.*; public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new FileReader("myCharStream\\java.txt")); ArrayList<String> arr=new ArrayList<String>(); String name;
while((name=br.readLine())!=null){
arr.add(name);
} br.close(); Random rr=new Random(arr.size());
int index=rr.nextInt(); String namename=arr.get(index);
System.out.println(namename);
}
}
案例:复制单级文件夹
import java.io.*;

import static org.apache.commons.io.FileUtils.copyFile;

public class Main{
public static void main(String[] args) throws IOException {
File ff=new File("E:\\itcast"); //获取数据源目录File对象的名称(itcast)
String ffname=ff.getName(); //创建目的地目录File对象
File destFolder =new File("myCharStream",ffname); if(!destFolder.exists()){
destFolder.mkdir();
} //获取数据源目录下所有文件的File数组
File[] listFiles=ff.listFiles(); //遍历
for(File f:listFiles){
String srcFileName=f.getName(); File destFile=new File(destFolder,srcFileName); copyFile(f,destFile);
}
}
}
复制文件的异常处理

try...catch..finally...

JDK7改进方案:try..catch...

JDK9改进方案:定义输入流对象、定义输出流对象、try...catch...

特殊操作流

标准输入输出流
//两个静态成员变量
public static final InputStream in:标准输入流
public static final PrintStream out:标准输出流
相关应用:
//标准输入流
import java.util.*;
import java.io.*; public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个字符串:");
String line=br.readLine();
System.out.println("你输入的字符串是:"+line); System.out.println("请输入一个整数:");
int id=Integer.parseInt(br.readLine());
System.out.println("你输入的整数是:"+id); //键盘录入数据
Scanner sc=new Scanner(System.in);
}
} //标准输出流
import java.io.*; public class Main{
public static void main(String[] args) throws IOException {
//BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
PrintStream ps=System.out; ps.print("hello");
ps.print(100);
ps.println("world");
ps.println(300);//System.out.println(300);
}
}
//不带ln,必须有参数
打印流

字节打印流:

PrintStream
只负责输出数据,不负责读取数据
PrintStream(String FileName);//使用指定的文件名创建新的打印流
相关应用:
import java.io.*;

public class Main{
public static void main(String[] args) throws IOException {
PrintStream ps=new PrintStream("myOtherStream\\ps.txt");
//字节输出流
ps.write(97);//a--查看时会转码
//使用特有方法
ps.println(97);//97--查看时,原样输出
ps.println(98);//98
ps.close();
}
}

字符打印流:

PrintWriter的构造方法:
PrintWriter(String fileName);//使用指定的文件名创建一个新的PrintWriter,而不需要自动更新
PrintWriter(Writer out,boolean autoFlush);//创建一个新的PrintWriter
相关应用:
//基础版
import java.io.*; public class Main{
public static void main(String[] args) throws IOException {
PrintWriter pw=new PrintWriter("myOtherStream\\pw.txt"); pw.write("hello");
pw.flush();//刷新流
//相当于pw.println("hello");
//pw.flush();
pw.write("world");
pw.flush();//刷新流 }
} //改进版
import java.io.*; public class Main{
public static void main(String[] args) throws IOException {
PrintWriter pw=new PrintWriter(new FileWriter("myOtherStream\\pw.txt"),true);
//true表示能够自动刷新
pw.println("hello");//实现自动更新 }
}

Java笔记第六弹的更多相关文章

  1. Effective java笔记(六),方法

    38.检查参数的有效性 绝大多数方法和构造器对于传递给它们的参数值都会有限制.如,对象引用不能为null,数组索引有范围限制等.应该在文档中指明所有这些限制,并在方法的开头处检查参数,以强制施加这些限 ...

  2. 面向对象三大特征之继承(extends)——Java笔记(六)

    继承:            从一般到特殊的关系,是一种拓展关系,子类对象是父类的一种,也可称为”is a“的关系 泛化:         把子类里的共性抽取到父类里的来的过程 特化:         ...

  3. Java笔记(六)列表和队列

    列表和队列 一)ArrayList 1.基本原理 ArrayList是一个泛型容器.内部会有一个数组elementData,一般会有预留空间 有一个整数记录实际的元素个数. private trans ...

  4. Java笔记(六)

    IO流: 字符流和字节流: 字符流两个基类: InputStream OutputStream 字节流两个基类: Reader Writer FileWriter: import java.io.Fi ...

  5. 菜鸡的Java笔记 第六 - java 方法

    前提:现在所讲解的方法定义格式,只属于JAVA 方法定义的其中一种组成方式.而完整的组成方式将随着学习逐步渗透. 1.方法的基本定义 方法(Method)在一些书中也会有人将其说是  函数(Funct ...

  6. Java笔记(十六)……内部类

    内部类概述 内部类是将一个类定义在另一个类里面,对里面那个类就成为内部类(内部类,嵌套类). 当描述事物时,事物的内部还有事物,该事物用内部类来描述,因为内部事物在使用外部事物的内容 访问特点 内部类 ...

  7. Java NIO 学习笔记(六)----异步文件通道 AsynchronousFileChannel

    目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...

  8. java并发编程笔记(六)——AQS

    java并发编程笔记(六)--AQS 使用了Node实现FIFO(first in first out)队列,可以用于构建锁或者其他同步装置的基础框架 利用了一个int类型表示状态 使用方法是继承 子 ...

  9. es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式

    es6 Object.assign   目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...

  10. Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable

    酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...

随机推荐

  1. idea引入ojdbc包报错

    网上下载或者让同事传两个jar过来,ojdbc6-11.2.0.7.0.jar 以及jconn3.0.jar 放入同一个文件夹中: 在此文件夹中cmd如下:回车,进入cmd控制台. 输入如下两个命令: ...

  2. Centos7.5下安装nginx

    #cd /usr/local #wget http://nginx.org/download/nginx-1.8.0.tar.gz #tar -xzvf nginx-1.8.0.tar.gz #cd ...

  3. 一文学会使用pip

    pip介绍 pip的全称:package installer for python,是 Python包管理工具,该工具提供了对Python包的查找.下载.安装.卸载的功能.Python官方的PyPi仓 ...

  4. Jmeter完整全套接口流程

    根据实际项目,编写一套完整的接口流程 项目流程介绍: 借款流程需要调用的接口,依次为: 前置校验:主要通过手机号验证该用户是存量用户,若撞库,则不允许继续操作: 用户注册:通过手机号+身份证号进行注册 ...

  5. Typora的下载和MarkDown的相关操作

    MarkDown 作为程序员就要会写blog(网络日记),那么怎么让你的笔记写的排版舒适清晰?我们可以通过MarkDown来写笔记 首先我们要下载Typora,因为现在官网的Typora要付费,所以可 ...

  6. SQLServer遇到的问题解决方案(6月9日)

    一.判定两个浮点数数值是否相等 对比数据类型为浮点数的数据时,因为浮点数精度问题,当判断两个数值是否相等时往往会出现错误的结果,如下图: 解决方案:一个比较好的解决方案是设定一个精度,通过判定两个值差 ...

  7. Python基础数据类型-list(列表)

    a = [1, 2, 3] a.append([1, 4]) a.append(8) a.append([8, 9, '10']) # 添加的是整体,即:将输入对象添加到列表末尾 print(a) # ...

  8. pnn模型 待整理

    https://blog.csdn.net/qq_18293213/article/details/90262378?spm=1001.2101.3001.6650.5&utm_medium= ...

  9. 面向对象2(Java)

    封装 基本介绍 该露的露,该藏的藏,我们的程序设计要追求"高内聚,低耦合": 高内聚:类的内部数据操作细节自己完成,不允许外部干涉 低耦合:仅暴露少量的方法给外部使用 封装(数据的 ...

  10. [fiddler的使用]模拟自动回复功能在模拟测试mock第三方对接系统的返回中的使用场景

    [场景描述]在许多对第三方的测试过程中,由于第三方没有测试环境或者测试环境同步开发的时候还未准备好,或者系统间联调时对方还未完成的各种情况下,我们可以通过fiddler来模拟对方的返回. [操作步骤] ...