字节流与字符流

字节流:字节输入流(InputStream)、字节输出流(OutputStream)

public static void main(String[] args) throws Exception {

		

		File file = new File("D:" + File.separator + "test.txt");

		if (!file.getParentFile().exists()) { // 父路径不存在

			file.getParentFile().mkdirs(); // 创建目录

		}

		OutputStream output = new FileOutputStream(file) ;

		String str = "Hello World ." ;	// 要输出的数据

		byte [] data = str.getBytes() ;	// 字符串变为字节数组

		output.write(data); // 进行内容的输出操作,或者data等同于”HelloWorld”.getBytes()

	

		output.close(); 

	}

  

字符流:字符输入流(Reader)、字符输出流(Writer)主要处理中文 

 OutputStream输出有个缺点,如果要输出其他数据类型(int,double),只有转换成字节数组才能输出。因此,java提供了另一个输出PrintStream

public static void main(String[] args) throws Exception {

		PrintStream p = new PrintStream(new FileOutputStream(new File("D:"+ File.separator + "hello.txt")));

		p.print("Hello");

		p.println("World");

		util.close() ;

	}

  字节流与字符流

通过观察PrintStream的结构与构造方法,这种是装饰设计模式。看起来类似代理设计模式,然而代理设计模式是基于接口,代理类所执行的方法也一定是接口中定义的方法

BufferedReader

public static void main(String[] args) throws Exception{

		BufferedReader read = new BufferedReader(new InputStreamReader(new FileInputStream("d:" + File.separator + "test.txt")));

		String str = read.readLine();

		System.out.println(str);

		

	}

  

Scanner简单例子

public static void main(String[] args) throws Exception {

		Scanner scan = new Scanner(new FileInputStream(new File("D:"

				+ File.separator + "test.txt")));

		while(scan.hasNext()) {

			System.out.println(scan.next());

		}

		scan.close(); 

	}

Scanner比InputStream好用多了,特别是读取数据多的时候

 

你可能感兴趣的:(字节流)