输入字符流
字节流读取文件
package com.cloud.reader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Arrays; public class Demo4 { public static void main(String[] args) throws IOException { readTest(); } //字节流读取文件 public static void readTest() throws IOException{ File file = new File("F:\\a.txt"); FileInputStream fileInputStream = new FileInputStream(file); byte[] buf = new byte[1024]; for(int i=0;i<3;i++){ fileInputStream.read(buf); System.out.println(new String(buf)); } fileInputStream.close(); } //使用字节流写中文 public static void writeTest() throws IOException{ File file = new File("F:\\a.txt"); FileOutputStream fileOutputStream = new FileOutputStream(file); String data="大家好"; byte[] buf = data.getBytes(); System.out.println("输出内容:"+Arrays.toString(buf)); fileOutputStream.write(buf); fileOutputStream.close(); } } |
字符输入流流程
package com.cloud.reader; import java.io.File; import java.io.FileReader; import java.io.IOException; /* 字节流:字节流读取的是文件中的二进制数据,不会自动转为可以看懂的字符 字符流:把读到的数据进行对应的编码与解码。字符流=字节流+编码(解码) 输入字符流: --|Reader 输入字符流的基类 抽象类 ----|FileReader 读取文件的输入字符流 */ public class Demo5 { public static void main(String[] args) throws IOException { readTest2(); } //缓冲字符数据读取文件 public static void readTest2() throws IOException{ File file = new File("F:\\a.txt"); FileReader fileReader = new FileReader(file); char[] buf = new char[1024]; int length = 0; while((length = fileReader.read(buf))!=-1){ System.out.println(new String(buf,0,length)); } fileReader.close(); } //字符流读取文件 public static void readTest1() throws IOException{ File file = new File("F:\\a.txt"); FileReader fileReader = new FileReader(file); int content = 0; while((content = fileReader.read())!=-1){ System.out.println((char)content); } fileReader.close(); } } |
输出字符流
输出字符流流程
package com.cloud.reader; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class Demo6 { public static void main(String[] args) throws IOException { File file = new File("F:\\a.txt"); FileWriter fileWriter = new FileWriter(file); String data = "今天天气真好"; fileWriter.write(data); fileWriter.close(); } } |
缓冲输入字符流
缓冲输入字符流流程
package com.cloud.reader; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Arrays;
/* 输入字符流 --|Reader 所有输入字符流的基类,抽象类 ----|FileReader 读取文件字符串的输入字符流 ----|BufferReader 缓冲输入字符流,提高读取文件的效率,拓展FileReader的功能,内部维护字符数组 注:缓冲流不具备读写文件的能力 */ public class Demo1 { public static void main(String[] args) throws IOException { File file = new File("F:\\a.txt"); FileReader fileReader = new FileReader(file); String line = null; while((line = myReadLine(fileReader))!=null){ System.out.println(line); } } //自己实现ReadLine方法 public static String myReadLine(FileReader fileReader) throws IOException{ //创建一个字符串缓冲对象 StringBuilder sb = new StringBuilder();//用来存储读取的数据 int content = 0; while((content=fileReader.read())!=-1){ if(content=='\r'){ continue; } else if(content=='\n'){ break; }else{ sb.append((char)content); } } //数据读完 if(content==-1){ return null; } return sb.toString(); } public static void readTest() throws IOException{ //找到目标文件 File file = new File("F\\a.txt"); //建立数据的输入通道 FileReader fileReader = new FileReader(file); //建立缓冲输入字符流 BufferedReader bufferedReader = new BufferedReader(fileReader); //读取数据 String line = null; while((line = bufferedReader.readLine())!=null){ System.out.println(Arrays.toString("aaa".getBytes())); } bufferedReader.close(); } } |
缓冲输出字符流
缓冲输出字符流流程
package com.cloud.reader; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; /* 输出字符流 --|Writer 所有输出字符流的基类,抽象类 ----|FileWriter 向文件输出字符数据的输出字符流 ----|BufferdWriter 缓冲输出字符流,内部维护长度为8192的字符数据作为缓冲区 */ public class Demo2 { public static void main(String[] args) throws IOException{ File file = new File("F:\\a.txt"); FileWriter fileWriter = new FileWriter(file); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); bufferedWriter.write("\r\n"); bufferedWriter.write("Hello,EveryOne"); bufferedWriter.flush(); } } |
字符流案例
登陆案例
package com.cloud.reader;
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner;
public class Demo3 { static Scanner scanner = new Scanner(System.in); public static void main(String[] args) throws IOException { System.out.println("选择功能:A:注册,B:登陆"); String option = scanner.next(); if("a".equalsIgnoreCase(option)){ //注册 reg(); } else if("b".equalsIgnoreCase(option)){ //登陆 login(); } else{ System.out.println("输入错误..."); } } //登陆 @SuppressWarnings("resource") public static void login() throws IOException{ System.out.println("请输入用户名..."); String userName = scanner.next(); System.out.println("请输入密码..."); String password = scanner.next(); String info = userName+""+password; BufferedReader bufferedReader = new BufferedReader(new FileReader("F:\\a.txt")); String line = null; boolean isLogin = false; while((line = bufferedReader.readLine())!=null){ if(info.equals(line)){ isLogin = true; break; } } if(isLogin){ System.out.println("欢迎"+userName+"登陆成功"); }else{ System.out.println("不存在该用户请注册"); } } //注册 public static void reg() throws IOException{ System.out.println("请输入用户名:"); String userName = scanner.next(); System.out.println("请输入密码:"); String password = scanner.next(); String info = userName+""+password; File file = new File("F:\\a.txt"); FileWriter fileWriter = new FileWriter(file); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); bufferedWriter.write(info); bufferedWriter.newLine(); bufferedWriter.close(); } } |
字符流拷贝文件
package com.cloud.reader; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Demo7 { public static void main(String[] args) throws IOException { // 字符流拷贝文件 BufferedReader bufferedReader = new BufferedReader(new FileReader("F:\\a.txt")); BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("F:\\b.txt")); String line = null; while ((line = bufferedReader.readLine())!=null) { bufferedWriter.write(line); } bufferedWriter.close(); bufferedReader.close(); } } |