Java基础知识之IO流的简单使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.io.*;
class Demo{
	public static void main(String args[]){
		// 声明输入流的引用
		FileInputStream input = null;
		// 声明输出流的引用
		FileOutputStream output = null;
		try{
			// 初始化两个io对象
			input = new FileInputStream("/Users/yusian/Documents/Java/from.txt");
			output = new FileOutputStream("/Users/yusian/Documents/Java/to.txt");
			// 读
			// 接收读取出来的字节流
			byte[] buffer = new byte[100];
			// 读取(接收体, 起始位置, 长度)
			input.read(buffer, 0, buffer.length);
			// 将数组内容初始化到字符串中
			String s = new String(buffer);
			// 去除首尾空格
			s.trim();
			// 打印字符串
			System.out.println(s);
 
			// 写
			// 将数组中的内容写入到文件中
			output.write(buffer, 0, buffer.length);
		}catch(Exception e){
			System.out.println(e);
		}
	}
}

2 thoughts on “Java基础知识之IO流的简单使用

  1. Sian Post author

    FileInputStream与FileOutputStream为字节流操作方法,同样还有FileReader与FileWriter两个类为字符流操作方法,基本实现完全类似:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    import java.io.*;
    class Demo{
    	public static void main(String args[]){
    		// 声明输入流的引用
    		FileReader input = null;
    		// 声明输出流的引用
    		FileWriter output = null;
    		try{
    			// 初始化两个io对象
    			input = new FileReader("/Users/yusian/Documents/Java/from.txt");
    			output = new FileWriter("/Users/yusian/Documents/Java/to.txt");
    			char[] buffer = new char[100];
    			while(true){
    				int temp = input.read(buffer, 0, buffer.length);
    				if (temp == -1) break;
    				output.write(buffer, 0, temp);
    			}
    		}catch(Exception e){
    			System.out.println(e);
    		}finally{
    			try{
    				input.close();
    				output.close();
    			}catch(Exception e){
    				System.out.println(e);
    			}
    		}
    	}
    }
  2. Sian Post author

    大文件则通过循环,每次读取固定长度来遍历,如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    import java.io.*;
    class Demo{
    	public static void main(String args[]){
    		// 声明输入流的引用
    		FileInputStream input = null;
    		// 声明输出流的引用
    		FileOutputStream output = null;
    		try{
    			// 初始化两个io对象
    			input = new FileInputStream("/Users/yusian/Documents/Java/from.txt");
    			output = new FileOutputStream("/Users/yusian/Documents/Java/to.txt");
    			// 读
    			// 接收读取出来的字节流
    			byte[] buffer = new byte[1024];
    			while(true){
    				// temp为本次读取的字节数,如果为空则返回-1,根据这个来判断循环次数
    				// read方法的第二个参数为读取文件起始位置偏移量offset,该值会在循环中自动后移
    				// write方法也一样,因此不需要在每次循环自加读取长度!!!
    				int temp = input.read(buffer, 0, buffer.length);
    				System.out.println(temp);
    				if (temp == -1) break;
    				output.write(buffer, 0, temp);
    			}
    		}catch(Exception e){
    			System.out.println(e);
    		}finally{
    			try{
    				input.close();
    				output.close();
    			}catch(Exception e){
    				System.out.println(e);
    			}
    		}
    	}
    }

Leave a Reply