您的位置:首页 > 编程语言 > Java开发

Java中字符流

2016-07-15 08:08 316 查看

输入字符流

字节流读取文件

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();
   }
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: