摘要:包几乎包含了所有操作输入输出需要的类。所有这些流类代表了输入源和输出目标。输入流表示从一个源读取数据,输出流表示向一个目标写数据。但本节讲述最基本的和流与相关的功能。读取控制台输入的控制台输入由完成。有多种构造方法可用来创建对象。
package com.learn; import org.omg.CORBA.PUBLIC_MEMBER; import java.io.*; /** * Created by fiz on 7/10/17. ** Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 * Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。 * 一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。 * Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。 * 但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。 *
*
*
* 读取控制台输入: *
* Java 的控制台输入由 System.in 完成。 * 为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流。 * 下面是创建 BufferedReader 的基本语法: */ public class FileStreamTest { public static void readDir(String dir) { /** * 读取指定目录下的文件夹,并只返回文件, */ File file = new File(dir); if (file.isDirectory()) { System.out.println("这个是个文件夹"); } else { System.out.println(); } } public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入你的要输入的内容"); String input = bufferedReader.readLine(); System.out.println(input); /** * FileInputStream *该流用于从文件读取数据,它的对象可以用关键字 new 来创建。 *有多种构造方法可用来创建对象。 *可以使用字符串类型的文件名来创建一个输入流对象来读取文件 */ InputStream inputStream = new FileInputStream("/Users/fiz/Documents/JavaProject/JavaProject.iml"); byte[] buffer = new byte[1000]; while (inputStream.read(buffer) > 0) { System.out.println(inputStream.read(buffer)); } /** * 输出文件 */ File f = new File("/Users/fiz/Documents/JavaProject/demo.txt"); FileOutputStream fop = new FileOutputStream(f); // 构建FileOutputStream对象,文件不存在会自动新建 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fop); outputStreamWriter.write("demo"); outputStreamWriter.close(); /** * PipedOutputStream/PipedInputStream * 不能用于同一个线程中,主要是要去不同线程获取 */ final PipedOutputStream pipedOutputStream = new PipedOutputStream(); final PipedInputStream pipedInputStream = new PipedInputStream(pipedOutputStream); Thread thread1 = new Thread(new Runnable() { @Override public void run() { try { pipedOutputStream.write("Hello world, pipe!".getBytes()); } catch (IOException e) { } } }); Thread thread2 = new Thread(new Runnable() { @Override public void run() { try { int data = pipedInputStream.read(); while (data != -1) { System.out.print((char) data); data = pipedInputStream.read(); } } catch (IOException e) { } } }); thread1.start(); thread2.start(); /** * InputStream */ InputStream inputStream1 = new FileInputStream("/Users/fiz/Documents/JavaProject/JavaProject.iml"); byte[] bytesRead = new byte[1024]; int data = inputStream1.read(bytesRead); while (data != -1) { //do something with data... System.out.println((char) data); data = inputStream1.read(); } inputStream1.close(); /** * FileOutputStream */ File file = new File("demo.txt"); FileOutputStream fileOutputStream = new FileOutputStream(file); int num = 10; while (num > 0) { fileOutputStream.write("deno+ ".getBytes()); num = num - 1; } fileOutputStream.close(); /** *FileInputStream 读取文件 */ FileInputStream fileInputStream = new FileInputStream(file); int read = fileInputStream.read(); while (read != -1) { System.out.println((char) fileInputStream.read()); read = fileInputStream.read(); } /** * inputStreamReader */ InputStream inputStream2 = new FileInputStream("demo.txt"); Reader inputStreamReader = new InputStreamReader(inputStream2); int data2 = inputStreamReader.read(); while (data2 != -1) { char theChar = (char) data2; System.out.println("inputStreamReader"); System.out.println(theChar); data2 = inputStreamReader.read(); } /** * */ OutputStream outputStream = new FileOutputStream("demo.txt"); Writer outputStreamWriter1 = new OutputStreamWriter(outputStream); outputStreamWriter1.write("Hello World"); outputStreamWriter1.close(); /** * FileWriter */ FileWriter fileWriter = new FileWriter(file); fileWriter.write("This is an example "); fileWriter.flush();// 刷掉缓冲区的内容 fileWriter.close(); /** * FileReader */ FileReader fileReader = new FileReader(file); int fileReader_data = fileReader.read(); while (fileReader_data != -1) { fileReader_data = fileReader.read(); System.out.println((char) fileReader_data); } /** *BufferedReader */ BufferedReader bufferedReader1 = new BufferedReader(new FileReader(file)); String line = bufferedReader1.readLine(); System.out.println("BufferedReader" + line); bufferedReader1.close(); // 循环读取 // while (line != null) { // // process line // } /** *BufferedWriter */ BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("demo.txt", true)); bufferedWriter.write("this is a demo process"); int count = 10; while (count > 0) { bufferedWriter.write("this is a demo process "); count = count - 1; } bufferedWriter.close(); File file1 = new File("test.txt"); FileWriter fw = new FileWriter(file1); BufferedWriter bw = new BufferedWriter(fw); bw.write("demo"); System.out.println("File written Successfully"); /** *FilterWriter 虚拟类 */ /** * */ LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(file1)); String line1 = lineNumberReader.readLine(); while (line != null) { line = lineNumberReader.readLine(); System.out.println(line + lineNumberReader.getLineNumber()); } } }
做个记录
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67342.html
摘要:不建议对这两个对象尝试使用单个线程,因为这样可能会造成该线程死锁。构造函数创建尚未连接到管道输入流的管道输出流。通常,数据由某个线程从对象读取,并由其他线程将其写入到相应的。 管道流 管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream)、管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上,在...
阅读 1790·2019-08-30 15:53
阅读 3097·2019-08-30 15:44
阅读 2756·2019-08-26 13:31
阅读 1927·2019-08-26 12:10
阅读 754·2019-08-26 11:01
阅读 2067·2019-08-23 15:32
阅读 1522·2019-08-23 13:43
阅读 2501·2019-08-23 11:58