通过修改文件的属性编码如图  属性-》编码-》GBK即可 直接用Scanner输入,System.out输出

用java实现汉字的笔画数 java中输入汉字_System

用java实现汉字的笔画数 java中输入汉字_用java实现汉字的笔画数_02

 

1.中文文件的读写用字符流PrintWriter 、FileReader 、FileWriter、 BufferedReader、 BufferedWriter 等,读取文件一定要用字符流。(BufferedReader、 BufferedWriter比FileReader 、FileWriter在方法兼容的基础上,提供的方法更多,PrintWriter提供的方法比BufferedWriter方便但是仅限于文件的写入)

2.如果是文件操作对象是类对象的话 可用对象序列化 ObjectInputStream、ObjectOutputStream等。

3.以上 流的具体用法参考 相关参考书

JDK1.7的我暂时找不到中文的

4.亲,最后一定要有**.close();不要忘了,漏了这个不会提示有错,文件内容为空

 5.最后贴上一个小应用帮助理解。

/* * 中文 输入输出流
 * 作者:冷秋月
 */
package stu;

import java.io.*;
import java.util.Scanner;
class Student implements Serializable {

    static final long serialVersionUID = 12345L;//呢个东东有咩用,听老师说是用于升级软件,那个大神能详解一下。
    String name;
    String tel;
    String birthday;

    public Student(String n, String t, String b) {
        name = n;
        tel = t;
        birthday = b;
    }
}

public class stu {
   
    public static void main(String[] args) {
        // TODO code application logic here
        int n = 0, i;
        Boolean finished = true;
        Student stu[] = new Student[300];
        try {
            while (finished) {
                Scanner cin = new Scanner(System.in);
                //数据输入
                String name;
                String tel;
                String birthday;
                System.out.println("输入学生姓名");
                name = "学生姓名 " + cin.nextLine();
                System.out.println("输入学生联系方式");
                tel = "学生联系方式 " + cin.nextLine();
                System.out.println("输入学生生日(如1992/01/01)");
                birthday = "学生生日 " + cin.nextLine();
                Student s = new Student(name, tel, birthday);
                //对象放进类数组中
                stu[n] = s;
                n++;
                //判断是否继续
                System.out.println("继续录入按1,停止按0");
                int c = cin.nextInt();
                if (c == 0) {
                    finished = false;
                }
            }
            //另外建一个新txt 共查看数据因为data 为乱码
            PrintWriter pf = new PrintWriter("学生数据.txt");
            for (i = 0; i < n; i++) {
                pf.println(stu[i].name);
                pf.println(stu[i].tel);
                pf.println(stu[i].birthday);
            }
            pf.close();
            /*遇上面所写的PrintWriter的代码功能一样
             BufferedWriter bwf=new BufferedWriter(new FileWriter("学生数据.txt"));
             for (i = 0; i < n; i++) {
                bwf.write(stu[i].name);
                bwf.newLine();
                bwf.write(stu[i].tel);
                 bwf.newLine();
               bwf.write(stu[i].birthday);
                bwf.newLine();
            }
            bwf.close();
            */
            //写入对象
            ObjectOutputStream inf = new ObjectOutputStream(new FileOutputStream("data.txt"));
            inf.writeObject(stu);
            inf.close();
            //读出对象
            ObjectInputStream outf = new ObjectInputStream(new FileInputStream("data.txt"));
            stu = (Student[]) (outf.readObject());
            for (i = 0; i < n; i++) {
                System.out.println(stu[i].name);
                System.out.println(stu[i].tel);
                System.out.println(stu[i].birthday);
            }
            outf.close();
        } catch (Exception e) {
            System.out.println("发生异常" + e);
            e.printStackTrace();
        }
    }
}