java标准输入输出流的概述
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(); }
- Java_基础—标准输入输出流概述和输出语句
- 黑马程序员——JAVA基础——IO(一)---流概述,节点流、处理流、转换流与标准输入输出流、打印流、File文件对象、合并流
- Java ,如何用标准的输入输出流重定向到一个文件
- IO流_标准输入输出流概述和输出语句的本质
- Java中IO流,输入输出流概述与总结
- Java中IO流,输入输出流概述与总结
- Java中IO流,输入输出流概述与总结
- Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)
- Java中IO流,输入输出流概述与总结
- Java中IO流,输入输出流概述与总结
- Java中标准输入输出流的重定向
- 黑马程序员——JAVA基础之标准输入输出流
- Java基础知识强化之IO流笔记61:标准输入输出流的本质
- Java中IO流,输入输出流概述与总结
- Java 重定向标准输入输出流
- Java中IO流,输入输出流概述与总结
- Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,转换流,随机访问流,合并流,序列化流,Properties
- Java I/O 标准输入输出流
- Java(标准输入/输出流)
- 【Java基础知识】IO流--标准输入输出流、打印流PrintStream