0
点赞
收藏
分享

微信扫一扫

IO特殊操作流:标准输入输出流、字节打印流及字符打印流


目录

​​一、标准输入流​​

​​二、标准输出流​​

​​三、字节打印流​​

​​四、字符打印流​​

​​五、复制Java文件打印流改进​​

一、标准输入流

public static final InputStream in:标准输入流。通常该流对应于键盘输入或由主机环境或用户指定的另个输入源

自己实现键盘录入数据:

public class SystemInDemo {
public static void main(String[] args) throws IOException {
//public static final InputStream in:标准输入流
InputStream is = System.in;
int by;
while ((by = is.read()) != -1) {
System.out.print((char) by);
}

//如何把字节流转换为字符流?用转换流
InputStreamReader isr = new InputStreamReader(is);
//使用字符流能不能够实现一次读取一行数据呢?可以
//但是,一次读取一行数据的方法是字符缓冲输入流的特有方法
BufferedReader br = new BufferedReader(isr);




BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

System.out.println("请输入一个字符串:");
String line = br.readLine();
System.out.println("你输入的字符串是:" + line);

System.out.println("请输入一个整数:");
int i = Integer.parseInt(br.readLine());
System.out.println("你输入的整数是:" + i);

//自己实现键盘录入数据太麻烦了,所以Java就提供了一个类供我们使用
Scanner sc = new Scanner(System.in);
}
}

二、标准输出流

public static final PrintStream out:标准输出流。通过该流对应于显示输出或主机环境或用户指定的另一个输出目标

输出语句的本质:是一个标准的输出流

PrintStream ps = System.out;

PrintStream类有的方法,System.out都可以使用

示例代码:

public class SystemOutDemo { 
public static void main(String[] args) {
//public static final PrintStream out:标准输出流
PrintStream ps = System.out;
//能够方便地打印各种数据值
ps.print("hello");
ps.print(100);
ps.println("hello");
ps.println(100);

//System.out的本质是一个字节输出流
System.out.println("hello");
System.out.println(100);
System.out.println();
// System.out.print();
}
}

三、字节打印流

打印流分类:

字节打印流:PrintStream

字符打印流:PringWriter

打印流的特点:

只负责输出数据,不负责读取数据

永远不会抛出IOException

有自己的特有方法

字节打印流:

PrintStream(String fileName):使用指定的文件名创建新的打印流

使用继承父类的方法写数据,查看的时候会转码;使用自己特有方法写数据,查看数据原样输出

可以输出语句的目的地

public static void setOut(PrintStream out):重新分配"标准"输出流

示例代码:

public class PrintStreamDemo { 
public static void main(String[] args) throws IOException {
//PrintStream(String fileName):使用指定的文件名创建新的打印流
PrintStream ps = new PrintStream("myOtherStream\\ps.txt");

//写数据
//字节输出流有的方法
// ps.write(97);
//使用特有方法写数据
// ps.print(97);
// ps.println();
// ps.print(98);
ps.println(97);
ps.println(98);

//释放资源
ps.close();
}
}

四、字符打印流

字符打印流构造方法

方法名

说明

PrintWriter(String file Name)

使用指定的文件名创建一个新的PrintWrite,而不需要自动执行刷新

PrintWriter(Writer out,boolean autoFlush)

创建一个新的PrintWriter out:字符输出流autoFlush:一个布尔值,如果为真,则println,printf,或format方法将刷新输出缓冲区

示例代码:

public class PrintWriterDemo {
public static void main(String[] args) throws IOException {
//PrintWriter(String fileName) :使用指定的文件名创建一个新的PrintWriter,而
// 不需要自动执行行刷新
// PrintWriter pw = new PrintWriter("myOtherStream\\pw.txt");
// pw.write("hello");
// pw.write("\r\n");
// pw.flush();
// pw.write("world");
// pw.write("\r\n");
// pw.flush();
// pw.println("hello");
/*
pw.write("hello");
pw.write("\r\n");
*/
// pw.flush();
// pw.println("world");
// pw.flush();
//PrintWriter(Writer out, boolean autoFlush):创建一个新的PrintWriter
PrintWriter pw = new PrintWriter(new FileWriter("myOtherStream\\pw.txt"),true);
// PrintWriter pw = new PrintWriter(new
FileWriter("myOtherStream\\pw.txt"),false);
pw.println("hello");
/*
pw.write("\r\n");
pw.flush();
*/
pw.println("world");
pw.close();
}
}

 五、复制Java文件打印流改进

需求:

把模块目录下的PrintStreamDemo.java 复制到模块目录下的 Copy.java

分析步骤:

根据数据源创建字符输入流对象

根据目的地创建字符输出流对象

读写数据,复制文件

释放资源

代码实现:

public class CopyJavaDemo {
public static void main(String[] args) throws IOException {
/*
//根据数据源创建字符输入流对象
BufferedReader br = new BufferedReader(new
FileReader("myOtherStream\\PrintStreamDemo.java"));
//根据目的地创建字符输出流对象
BufferedWriter bw = new BufferedWriter(new
FileWriter("myOtherStream\\Copy.java"));
//读写数据,复制文件
String line;
while ((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();
bw.flush();
}
//释放资源
bw.close();
br.close();
*/

//根据数据源创建字符输入流对象
BufferedReader br = new BufferedReader(new FileReader("myOtherStream\\PrintStreamDemo.java"));
//根据目的地创建字符输出流对象
PrintWriter pw = new PrintWriter(new FileWriter("myOtherStream\\Copy.java"), true);
//读写数据,复制文件
String line;
while ((line = br.readLine()) != null) {
pw.println(line);
}
//释放资源
pw.close();
br.close();
}
}

举报

相关推荐

0 条评论