Java输入输出处理技术2

7.从键盘输入

从键盘输入一行字符,并显示到屏幕上。

package io;

import java.io.*;

public class ReadAndWrite {



    public static void main(String[] args) {

        InputStreamReader isr=new InputStreamReader(System.in);

        OutputStreamWriter osr=new OutputStreamWriter(System.out);

        int ch;

        try {

            System.out.print("请输入一行字符:");

            while((ch=isr.read())!='\r')

                osr.write(ch);

            isr.close();

            osr.close();

        } catch (IOException e) {

            System.out.println("输入流有误!");

        }

        

    }



}

8.文件复制

实现文件的复制。

package io;

import java.io.*;

public class ReadAndWriteFile {



    public static void main(String[] args) {

        InputStreamReader isr;

        OutputStreamWriter osw;

        int ch;

        if(args.length!=2){

            System.out.println("参数格式不对,应该为:java CopyFile 源文件名 目标文件名");

            return;

        }

        try {

            isr=new InputStreamReader(new FileInputStream(args[0]));

            osw=new OutputStreamWriter(new FileOutputStream(args[1]));

            while((ch=isr.read())!=-1)

                osw.write(ch);

            isr.close();

            osw.close();

            System.out.println("文件复制成功");

        } catch (FileNotFoundException e) {

            System.out.println("文件没有找到!");

        } catch (IOException e) {

            System.out.println("文件读写错误!");

        }



    }



}

9.控制台输入类Scanner

Scanner使用示例

package io;

import java.util.*;

public class useScanner {



    public static void main(String[] args) {

        Scanner in=new Scanner(System.in);

        System.out.println("请输入你的姓名:");

        String name=in.nextLine();

        System.out.println("请输入你的年龄:");

        int age=in.nextInt();

        System.out.println("请输入你的身高(单位:米):");

        double height=in.nextDouble();

        System.out.println("姓名:"+name+"年龄:"+age+"身高:"+height);

    }



}

10.File类读取文件列表

列出目录下的所有文件和子目录。

package io;

import java.io.*;

import java.text.SimpleDateFormat;

import java.util.*;

public class dir {



    public static void main(String[] args) {

        File fdir; //声明File对象

        File[] AllFile; //声明一个File数组对象

        String name; //定义一个String类型的name变量,存储文件名信息

        String dirFlag; //标记是否为文件

        long size; //存储文件长度信息

        Date date; //存储文件属性中时间信息

        if(args.length<1)

            fdir = new File("."); //用户没有指定目录,则默认为当前目录

        else

            fdir = new File(args[0]); 

        AllFile=fdir.listFiles(); //获得文件和目录列表

        //输出目录下所有的文件和目录

        for(int i=0;i<AllFile.length;i++){

            name = AllFile[i].getName(); //获得文件名

            if(AllFile[i].isFile()){  //判断是否为文件

                dirFlag="                ";

                size=AllFile[i].length();

            }else{

                dirFlag="        <dir>        ";

                size = 0;

            }

            date = new Date(AllFile[i].lastModified()); //获取文件最后一次修改时间

            //对输出的文件格式进行格式化处理,输出24小时格式的时间

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");

            //按照格式输出文件时间

            System.out.print(sdf.format(date));

            //输出目录标志

            System.out.print(dirFlag);

            if(size>0)

                System.out.printf("%10d",size);

            else

                System.out.print("          ");

            //输出文件名并换行

            System.out.println(" "+name);

        }

        System.out.println("共有"+AllFile.length+"个文件和目录");

    }



}

11.RandomAccessFile类进行文件加密

文件加密/解密示例。

package io;

import java.io.*;

public class encrypt {

    private File file; //存储文件对象信息

    byte[] buf;  //缓冲区,存储文件中的所有数据

    RandomAccessFile fp;

    //用参数filename指定的文件构造一个filed对象存储

    //同时为缓冲区buf分配与文件长度相等的存储空间

    public encrypt(String filename){

        file=new File(filename);

        buf=new byte[(int)file.length()];

    }

    

    public encrypt(File destfile){

        file = destfile;

        buf = new byte[(int)file.length()];

    }

    

    //按照读写的方式打开文件

    public void openFile()throws FileNotFoundException{

        fp=new RandomAccessFile(file,"rw");

    }

    

    //关闭文件

    public void closeFile()throws IOException{

        fp.close();

    }

    

    //对文件进行加密/解密

    public void coding()throws IOException{

        //将文件内容读到缓冲区中

        fp.read(buf);

        //将缓冲区中的内容取反

        for(int i=0;i<buf.length;i++)

            buf[i]=(byte)(~buf[i]);

        //将文件指针定位到文件头部

        fp.seek(0);

        //将缓冲区中的内容写入到文件中

        fp.write(buf);

    }

    

    public static void main(String[] args) {

        encrypt oa;

        if(args.length<1){

            System.out.println("你需要指定加密文件的名字!");

            return;

        }

        try {

            oa = new encrypt(args[0]);

            oa.openFile();

            oa.coding();

            oa.closeFile();

            System.out.println("文件加密成功!");

        } catch (FileNotFoundException e) {

            System.out.println("没有找到文件:"+args[0]);

        }catch (IOException e){

            System.out.println("文件读写错误:"+args[0]);

        }

        

    }



}

12.Java序列化技术

用序列化来存储对象。

先定义一个用来序列化的类:

package io.xuliehua;

import java.io.*;

public class Student implements Serializable{

    private String name;

    private String ID;

    private int age;

    private String specialty;

    public Student(String name, String ID, int age, String specialty){

        this.name=name;

        this.ID=ID;

        this.age=age;

        this.specialty=specialty;

    }

    

    public Student(){}

    

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    

    public String getID() {

        return ID;

    }

    public void setID(String iD) {

        ID = iD;

    }

    

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    

    public String getSpecialty() {

        return specialty;

    }

    public void setSpecialty(String specialty) {

        this.specialty = specialty;

    }

    

    public String toString(){

        return "姓名:"+name+"  学号:"+ID+"  年龄:"+age+"  专业:"+specialty;

    }

}
package io.xuliehua;

import java.io.*;

public class ObjectFileTest {



    public static void main(String[] args) {

        Student st = new Student("周勇","20140101",18,"计算机");

        try {

            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("save.dat"));

            out.writeObject(st);

            out.close();

            ObjectInputStream in = new ObjectInputStream(new FileInputStream("save.dat"));

            Student pupil = (Student)in.readObject();

            in.close();

            System.out.println(pupil);

            System.out.println("姓名:"+pupil.getName());

            System.out.println("学号:"+pupil.getID());

            System.out.println("年龄:"+pupil.getAge());

            System.out.println("专业:"+pupil.getSpecialty());

        } catch (FileNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (ClassNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        



    }



}

程序运行结果如下:

姓名:周勇  学号:20140101  年龄:18  专业:计算机

姓名:周勇

学号:20140101

年龄:18

专业:计算机

 

你可能感兴趣的:(java)