> Java > java지도 시간 > 본문

IO(문자 스트림 문자 버퍼 스트림)

巴扎黑
풀어 주다: 2017-06-26 09:53:50
원래의
1601명이 탐색했습니다.

FileWriter: 파일에 데이터를 쓰는 기능
사용 단계:
1. FW 개체 만들기
FileWriter(String fileName); 쓰려는 파일에 해당 파일 이름을 매개 변수로 사용하세요
2 . 입력 데이터 쓰기
wirte(String str); 문자열 데이터 쓰기
3. 새로 고침
플러시() 4. 리소스 닫기

절대 경로 및 상대 경로

경로는 절대 경로입니다. 예: E:\289\b.txt 파일이 저장되는 위치는 경로가 가리키는 위치입니다. 예를 들어 드라이브 문자가 없는 경로는 상대 경로입니다. , b.txt 파일이 저장되는 위치는 현재 프로젝트의 경로

Refresh

입니다. 플러시 후 스트림의 데이터를 파일로 새로 고치는 데 사용됩니다.

close: 리소스를 닫고 리소스를 닫기 전에 자동으로 새로 고침을 수행합니다. 스트림이 닫히면 더 이상 쓸 수 없습니다.

FileWriter 데이터를 쓰는 5가지 방법 void write(String str) // 쓰기 string

void write(String str, int index, int len) // 쓰기 index부터 시작하여 len 동안 지속되는 문자열의 일부를 입력합니다.

void write(int ch) // int를 사용하는 이유는 다음과 같습니다. 해당 문자 a---> 97, b -- > 98 void write(char[] chs)//chs 배열의 데이터를 파일에 쓸 수도 있습니다 void write( char[] chs,int index,int len) //chs 배열의 데이터 일부를 다음 파일에 씁니다. 파일은 인덱스에서 시작하여 len 동안 지속됩니다.


linebreak

windows: rn

linux: n

Mac: r
구성 방법

new FileWriter("test04.txt"); 새 데이터를 파일에 씁니다. 원본 데이터를 모두 덮어씁니다.
new FileWriter(String fileName, boolean add); 그렇지 않으면 덮어쓰기를 의미합니다.
FileReader 함수: 파일에서 데이터 읽기


사용 단계:
1. FR 개체 만들기 FileReader(String fileName)를 매개 변수로 전달 2. 호출 데이터를 읽는 방법
int read(); 한 번에 한 문자를 읽고 이 문자를 반환 값으로 사용합니다. 데이터를 읽을 때 반환되는 결과는 -1 int read(char[] chs); 한 번에 읽어온 데이터를 chs 배열에 저장하고, 이번에 읽은 숫자를 반환합니다 3. 리소스를 닫습니다
close();

Read
int read(); 문자를 반환 값으로

int read(char[] chs); 한 번에 한 문자 배열을 읽어서 읽습니다. 얻은 데이터는 chs 배열에 저장되며, 이번에 읽은 문자 수를 반환 값으로 사용합니다.
데이터 읽기가 완료되면 반환 값은 -1입니다.


BufferedWriter를 사용하여 데이터를 작성하므로 더 효율적이라는 장점이 있습니다.

사용 단계:
1. BW 개체 생성
BufferedWriter bw = new BufferedWriter (new FileWriter(String fileName));
2. 데이터 쓰기 bw.write(String str) 3. 새로 고침
bw.flush( )
4. 닫기
bw.close()
bw.newLine(); // 줄바꿈 삽입, 다른 시스템에 따라 해당 시스템 줄바꿈 삽입


BufferedReader는 데이터를 읽는 데 사용되므로 이점이 더 효율적입니다.

사용 단계:
1. BR 개체 만들기

BufferedReader br = new BufferedReader( new FileReader(String fileName));

2. 데이터 읽기 br.read() br.read(char[] chs)
3. 닫기
br.close()
readLine은 한 줄씩 내용을 읽습니다. 데이터를 읽으면 null을 반환합니다



IO 코드 연습

* 요구 사항 1:
* 지정된 파일에서 데이터를 읽고 컬렉션에 저장하고 표시합니다

*

* 1. 파일을 관찰하고 사용자 정보를 기술하는 클래스 생성 * 2. 사용자 정보를 저장할 컬렉션 생성 * 3. BR 객체 생성
* 4. 파일을 읽고 구성된 객체를 컬렉션에 추가
* 5. 리소스 닫기
* 6. 탐색 및 표시

 1 public static void test01() throws IOException { 2         ArrayList<User> list = new ArrayList<User>(); 3  4         // 创建一个BR对象 5         BufferedReader br = new BufferedReader(new FileReader("Users.txt")); 6         String line; 7         while ((line = br.readLine()) != null) { 8             // 切割 9             String[] uu = line.split(",");10             User u = new User(uu[0], uu[1]);11             list.add(u);12         }13         br.close();14 15         for (int i = 0; i < list.size(); i++) {16             User user = list.get(i);17             System.out.println(user.getName() + "   " + user.getPwd());18         }19     }
로그인 후 복사


요구 사항 2:
지정된 사용자 이름과 비밀번호가 지정된 파일에 있는지 확인
사용자가 사용자 이름과 비밀번호를 입력하여 사용자 이름이 와 비밀번호는 지정된 파일에 있습니다 1. 파일 관찰 사용자 정보를 설명하는 클래스 만들기
2. 사용자 정보를 저장하는 컬렉션 만들기
3. BR 개체 만들기

4. 파일을 읽으면 구성 요소 개체가 컬렉션에 추가됨
5. 리소스 닫기
6. 사용자에게 사용자 이름과 비밀번호를 입력하라는 메시지 표시
7. 사용자가 입력한 사용자 이름과 비밀번호를 사용하여 컬렉션에서 검색하면 해당 항목이 컬렉션에 있음을 의미합니다. 그렇지 않으면 파일이 없다는 뜻입니다

 1 public static void test02() throws IOException { 2         ArrayList<User> list = new ArrayList<User>(); 3  4         // 创建一个BR对象 5         BufferedReader br = new BufferedReader(new FileReader("Users.txt")); 6         String line; 7         while ((line = br.readLine()) != null) { 8             // 切割 9             String[] uu = line.split(",");10             User u = new User(uu[0], uu[1]);11             list.add(u);12         }13         br.close();14 15         Scanner sc = new Scanner(System.in);16         System.out.println("请输入用户名");17         String name = sc.next();18         System.out.println("请输入密码");19         String pwd = sc.next();20 21         // 定义标记22         int index = -1;23         for (int i = 0; i < list.size(); i++) {24             User user = list.get(i);25             if (name.equals(user.getName()) && pwd.equals(user.getPwd())) {26                 // 修改标记27                 index = i;28                 break;29             }30         }31         // 判断笔记32         if (index == -1) {33             //34             System.out.println("用户名或者密码错误");35         } else {36             System.out.println("恭喜你猜对了");37         }38 39     }
로그인 후 복사

 

需求三:
让用户输入一个用户名和密码 判断这个用户名和密码是否在指定的文件中 如果不在就一直猜 直到猜对为止
1.观察文件  创建一个类 描述用户的信息
2.创建一个集合用来存储用户的信息
3.创建一个BR对象
4.读取文件,组成对象 添加到集合中
5.关闭资源
6.提示用户输入用户名和密码
7.拿用户输入的用户名和密码 去集合中查找, 如果找到就表示在文件中, 否则表示不在
8.使用循环进行反复判断

 1 public static void test03() throws IOException{ 2  3         ArrayList<User> list = new ArrayList<User>(); 4  5         // 创建一个BR对象 6         BufferedReader br = new BufferedReader(new FileReader("Users.txt")); 7         String line; 8         while ((line = br.readLine()) != null) { 9             // 切割10             String[] uu = line.split(",");11             User u = new User(uu[0], uu[1]);12             list.add(u);13         }14         br.close();15 16         Scanner sc = new Scanner(System.in);17         while(true){18             19             System.out.println("请输入用户名");20             String name = sc.next();21             System.out.println("请输入密码");22             String pwd = sc.next();23 24             // 定义标记25             int index = -1;26             for (int i = 0; i < list.size(); i++) {27                 User user = list.get(i);28                 if (name.equals(user.getName()) && pwd.equals(user.getPwd())) {29                     // 修改标记30                     index = i;31                     break;32                 }33             }34             // 判断笔记35             if (index == -1) {36                 //37                 System.out.println("用户名或者密码错误 ,请重新输入用户名和密码 ");38             } else {39                 System.out.println("恭喜你猜对了");40                 break;41             }42 43             44         }45     }
로그인 후 복사

需求四:
让用户输入一个用户名和密码 判断这个用户名和密码是否在指定的文件中 如果不在就一直猜 直到猜对为止 用户只能猜3次 每次失败提示还能猜几次
1.观察文件  创建一个类 描述用户的信息
2.创建一个集合用来存储用户的信息
3.创建一个BR对象
4.读取文件,组成对象 添加到集合中
5.关闭资源
6.提示用户输入用户名和密码
7.拿用户输入的用户名和密码 去集合中查找, 如果找到就表示在文件中, 否则表示不在
8.使用循环进行反复判断

 1     public static void main(String[] args) throws IOException { 2  3         ArrayList<User> list = new ArrayList<User>(); 4  5         // 创建一个BR对象 6         BufferedReader br = new BufferedReader(new FileReader("Users.txt")); 7         String line; 8         while ((line = br.readLine()) != null) { 9             // 切割10             String[] uu = line.split(",");11             User u = new User(uu[0], uu[1]);12             list.add(u);13         }14         br.close();15 16         Scanner sc = new Scanner(System.in);17         int count = 0; 
18         while(true){19             20             System.out.println("请输入用户名");21             String name = sc.next();22             System.out.println("请输入密码");23             String pwd = sc.next();24             count++;25             // 定义标记26             int index = -1;27             for (int i = 0; i < list.size(); i++) {28                 User user = list.get(i);29                 if (name.equals(user.getName()) && pwd.equals(user.getPwd())) {30                     // 修改标记31                     index = i;32                     break;33                 }34             }35             // 判断笔记36             if (index == -1) {37                 if(count < 3){38                     System.out.println("用户名或者密码错误 ,请重新输入用户名和密码  还可以猜测的次数是 :"+(3 - count ));39                     40                 }else{41                     System.out.println("别猜了 练习管理员吧 !!!");42                     break;43                 }44                 //45             } else {46                 System.out.println("恭喜你猜对了");47                 break;48             }49 50             51         }52         53     }
로그인 후 복사

IO版学生管理系统

  1 public static void main(String[] args) throws IOException {  2         String fileName = "list.txt";  3         // 初始化数据  4         // 创建集合容器  5         ArrayList<Student> list = new ArrayList<Student>();  6         //从文件中读取数据存入到集合  7         readFromFile(list, fileName);  8 //        // ====================测试数据===================  9 //        Student s1 = new Student("9001", "张三", "18", "北京"); 10 //        Student s2 = new Student("9002", "张三3", "18", "北京"); 11 //        Student s3 = new Student("9003", "张三4", "18", "北京"); 12 //        list.add(s1); 13 //        list.add(s2); 14 //        list.add(s3); 15 //        // ====================测试数据=================== 16  17         System.out.println("----------------------欢迎使用管理系统--------------------------"); 18         // 死循环 19         while (true) { 20             // 接收用户的选择 21             int user = chose(); 22  23             // 根据用户的输入调用功能 24             switch (user) { 25             case 1: 26                 show(list); 27                 break; 28             case 2: 29                 add(list); 30                 save2File(list, fileName); 31                 break; 32             case 3: 33                 upd(list); 34                 save2File(list, fileName); 35                 break; 36             case 4: 37                 del(list); 38                 save2File(list, fileName); 39                 break; 40             case 5: 41                 System.out.println("欢迎下次再来哦 老板"); 42                 System.exit(0); 43                 break; 44  45             default: 46                 System.out.println("呵呵"); 47                 break; 48             } 49         } 50     } 51     //把数据从文件中读取出来 存入到集合  52     public static void readFromFile(ArrayList<Student> list,String fileName) throws IOException{ 53         // 创建BR对象 54                 BufferedReader br = new BufferedReader(new FileReader(fileName)); 55  56                 String line; 57                 while ((line = br.readLine()) != null) { 58                     // 9003,阿拉并,20,迪拜 59                     // 把读取到的一行信息 切割成各个字段 60                     String[] ss = line.split(","); 61                     // 把散装的数组组成对象 62                     Student s = new Student(ss[0], ss[1], ss[2], ss[3]); 63                     // 把对象添加到集合中 64                     list.add(s); 65                 } 66  67                 // 关闭资源 68                 br.close(); 69                 System.out.println("初始化完毕"); 70     } 71     // 把集合中的数据 写入到文件  72     public static void save2File(ArrayList<Student> list ,String fileName) throws IOException{ 73         //创建BW对象 74                 BufferedWriter bw = new BufferedWriter(new FileWriter(fileName)); 75                  76                 //遍历集合获取学生信息, 写入到文件  77                 for (int i = 0; i < list.size(); i++) { 78                     Student tmp = list.get(i); 79                     // 9001,张三,18,北京 80                     //使用sb按照指定的格式拼装学生的信息  81                     StringBuilder sb = new StringBuilder(); 82                     sb.append(tmp.getId()).append(",") 83                     .append(tmp.getName()).append(",") 84                     .append(tmp.getAge()).append(",") 85                     .append(tmp.getHome()); 86                     bw.write(sb.toString()); 87                     bw.newLine();// 换行 88                     bw.flush(); 89                 } 90                  91                 //6.关闭资源  92                 bw.close(); 93     } 94      95      96     public static int chose() { 97         // 展示菜单 98         System.out.println("===================================="); 99         System.out.println("1.展示学生信息");100         System.out.println("2.添加学生信息");101         System.out.println("3.修改学生信息");102         System.out.println("4.删除学生信息");103         System.out.println("5.退出学生信息管理系统");104         System.out.println("请输入功能序号");105         System.out.println("====================================");106         // 接收用户的输入107         Scanner sc = new Scanner(System.in);108         return sc.nextInt();109 110     }111 112     public static void del(ArrayList<Student> list) {113         // 提示输入学号114         Scanner sc = new Scanner(System.in);115         System.out.println("请输入学号");116         String id = sc.next();117         // 查找118         // 查找119         // 定义标记120         int index = -1;121         // 查找 关键位置修改标记122         for (int i = 0; i < list.size(); i++) {123             Student s = list.get(i);124             if (id.equals(s.getId())) {125                 // 找到126                 index = i;127                 break;128             }129         }130         //判断标记 131         if(index == -1){132             System.out.println("无这个学号的学生 请重新选择功能");133         }else{134             //删除135             list.remove(index);136             System.out.println("删除完毕");137         }138 139     }140 141     public static void upd(ArrayList<Student> list) {142         // 提示输入学号143         Scanner sc = new Scanner(System.in);144         System.out.println("请输入学号");145         String id = sc.next();146         // 查找147         // 定义标记148         int index = -1;149         // 查找 关键位置修改标记150         for (int i = 0; i < list.size(); i++) {151             Student s = list.get(i);152             if (id.equals(s.getId())) {153                 // 找到154                 index = i;155                 break;156             }157         }158         // 判断标记159         if (index == -1) {160             // 没找到161             System.out.println("没有这个学号的学生 请重新选择功能  ");162         } else {163             System.out.println("请输入新姓名");164             String name = sc.next();165             System.out.println("请输入新年龄");166             String age = sc.next();167             System.out.println("请输入新家乡");168             String home = sc.next();169             Student s = new Student(id, name, age, home);170             list.set(index, s);171             System.out.println("修改完毕");172         }173 174     }175 176     public static void add(ArrayList<Student> list) {177         // 提示输入学号178         Scanner sc = new Scanner(System.in);179         System.out.println("请输入学号");180         String id = sc.next();181         // 去重182         while (true) {183             // 拿着用户输入的id去集合中查找,如果没有相等的id说明合法, 否则提示不合法并继续输入继续去重,直到合法位置184             // 定义标记185             int index = -1;186             // 查找 关键位置改变标记187             for (int i = 0; i < list.size(); i++) {188                 Student student = list.get(i);189                 if (id.equals(student.getId())) {190                     // 有重复191                     index = i;192                     break;193                 }194             }195             // 判断标记196             if (index == -1) {197                 // 无重复198                 break;199             } else {200                 // 有重复201                 System.out.println("您输入的学号 重复了  请重新输入学号");202                 id = sc.next();203             }204         }205 206         System.out.println("请输入姓名");207         String name = sc.next();208         System.out.println("请输入年龄");209         String age = sc.next();210         System.out.println("请输入家乡");211         String home = sc.next();212         Student s = new Student(id, name, age, home);213         list.add(s);214         System.out.println("添加完毕");215     }216 217     public static void show(ArrayList<Student> list) {218         // 判断219         if (list.size() == 0) {220             System.out.println("系统中无学生信息, 请选择添加");221         } else {222             System.out.println("===================学生信息如下======================");223             System.out.println("学号\t\t姓名\t\t年龄\t\t家乡");224             for (int i = 0; i < list.size(); i++) {225                 Student s = list.get(i);226                 System.out.println(s.getId() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "\t\t" + s.getHome());227             }228         }229         System.out.println("展示完毕");230     }
로그인 후 복사

 

위 내용은 IO(문자 스트림 문자 버퍼 스트림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!