首页 > 技术文章 > Java - IO

ze7777 2017-07-24 02:05 原文

Java IO分为两部分:1. 对屏幕和键盘输入输出操作;2. 对文件进行输入输出操作。

Java中有字符流和字节流两种。字符流就是对字符进行操作,字节流就是对字节进行操作。

一般以Reader/Writer结尾的,都是字符流操作单位;以Stream结尾的,都是字节流操作单位。

字符流经我们常用到的基本单位是FileWriter和FileReader,字节流用到的基本单位是FileInputStream和FileOutputStream。其构造函数都可以接收文件名。但一般我们不会用它们直接进行IO操作。我们会将它们嵌套入PrintWriter,Scanner,BufferedReader/Writer/InputStream/OutputStream中用。

 

对屏幕进行输入输出

1.对屏幕进行输出:

System.out.println("Hello, World");

2.对键盘进行输入:Scanner

String s=null;

//读取一串字符,以空格为分界
s=input.next();
//读取一行
s=input.nextLine();
//读取一个整型变量
int a=input.nextInt();

//连续读取;**注意此处会连续读取,永远不会停,需要设置条件停止循环**
while(input.hasNextLine()){
    s=input.nextLine();
    //此处需要设置中断while的条件语句        
}

对文件进行输入输出

1.对文件进行IO操作,不要求效率的情况下用PrintWriter和Scanner:

try{
    
PrintWriter out
=new PrintWriter(new FileOutputStream("a.txt",true)); //true,表示在原文件后追加内容;此处不用true,则会覆盖原文件 out.println("Hello World!"); out.close(); Scanner in=new Scanner(new FileInputStream("a.txt")); while(in.hasNext()){ System.out.println(in.nextLine()); } in.close(); } catch(IOException e){ System.out.println(e.getMessage()); }

2.对文件进行IO操作,要求效率的话用:BufferedReader/BufferedWriter/BufferedInputStream/BufferedOutputStream。因为这些对象用到了缓存,减少IO的读写次数,所以效率更高。

BufferedReader/BufferedWriter:

try {
   
    BufferedWriter out=new BufferedWriter(new FileWriter("a.txt"));
    BufferedReader in=new BufferedReader(new FileReader("a.txt"));
    
    //输出字符流
    out.write("Hello,World!");
    out.close();
    //读取字符流
    String s=in.readLine();
    System.out.println(s);
    in.close();

} catch (IOException e) {
    e.printStackTrace();
}

BufferedInputStream/BufferedOutputStream:

try {
    BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream("a.txt"));
    BufferedInputStream in=new BufferedInputStream(new FileInputStream("a.txt"));
            
    String s="Hello, World!";
    byte[] a=s.getBytes();
    //输出字节流
    out.write(a);
    out.close();
            
    File f=new File("a.txt");
    byte[] b=new byte[(int)f.length()];
    //读取字节流
    in.read(b);
    in.close();
    System.out.println(new String(b));
            
} catch (IOException e) {
    e.printStackTrace();
}

 

推荐阅读