文档章节

java I/O

JavaSon712
 JavaSon712
发布于 2017/05/24 21:49
字数 611
阅读 10
收藏 0

准备

byte:计算机存储的基本单位,1byte=8bit,我们看到的字符不论是何种编码最终都将以byte的形式保存在计算机上。

char:代表一个字符,可以是一个汉字,或者一个字母,java意义上的char,一般情况下1 char=2 byte;

java内部编码:java内部编码采用UTF16,UTF16并非为定长编码,而是不定长编码,一般为二字节,或者四字节。

String:就是char的数组集合。

ps:关于字符编码如果大家想要深入了解,可以去肖国栋的i自留地看他的博客,应该说这是我在网上看到的讲的最好的关于这方面的内容。

package json712.study_javaio;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.util.Scanner;

import org.junit.Test;

public class IOUtilsTest {
	// @Test
	public void readAndWriteFileByStream() {
		String file = "d:" + File.separator + "inputstream.txt";
		String des = "d:" + File.separator + "outstream.txt";
		System.out.println(System.getProperty("file.encoding"));
		try {
			InputStream fileInputStrem = new FileInputStream(file);
			OutputStream fileOutputStream = new FileOutputStream(des);
			byte[] b = new byte[fileInputStrem.available()];
			int temp = 0;
			int len = 0;
			while ((temp = fileInputStrem.read()) != -1) {
				fileOutputStream.write(temp);
				b[len] = (byte) temp;
				len++;
			}
			fileInputStrem.close();
			fileOutputStream.close();
			System.out.println(new String(b, "gbk"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@Test
	public void readAndWriteFileByBuffStream() {
		String file = "d:" + File.separator + "inputstream.txt";
		String des = "d:" + File.separator + "outstream.txt";
		try {
			BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
			BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(des));
			byte[] b = new byte[bufferedInputStream.available()];
			int len = 0;
			int temp = 0;
			while ((temp = bufferedInputStream.read()) != -1) {
				bufferedOutputStream.write(temp);
				b[len] = (byte) temp;
				len++;
			}
			bufferedInputStream.close();
			bufferedOutputStream.close();
			System.out.println(new String(b, "gbk"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	// @Test
	public void readAndWriteFileByStremReader() {
		String file = "d:" + File.separator + "inputstream.txt";
		String des = "d:" + File.separator + "outstream.txt";
		int temp = 0;
		StringBuilder sb = new StringBuilder();
		try {
			InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file),
					Charset.forName("GBK"));
			OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(des),
					Charset.forName("GBK"));
			while ((temp = inputStreamReader.read()) != -1) {
				outputStreamWriter.write(temp);
				sb.append((char) temp);
			}
			System.out.println(sb.toString());
			inputStreamReader.close();
			outputStreamWriter.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	// @Test
	public void reaAndWritedFileByReader() {
		String file = "d:" + File.separator + "inputstream.txt";
		String des = "d:" + File.separator + "outstream.txt";
		StringBuilder sb = new StringBuilder();
		int temp = 0;
		try {
			FileReader fileReader = new FileReader(file);
			FileWriter fileWriter = new FileWriter(des);
			while ((temp = fileReader.read()) != -1) {
				fileWriter.write(temp);
				sb.append((char) temp);
			}
			fileReader.close();
			fileWriter.close();
			System.out.println(sb.toString());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@Test
	public void readAndWriteFileByBuffReader() {
		String file = "d:" + File.separator + "inputstream.txt";
		String des = "d:" + File.separator + "outstream.txt";
		String text = null;
		try {
			BufferedReader bufferedReader = new BufferedReader(
					new InputStreamReader(new FileInputStream(file), Charset.forName("GBK")));
			BufferedWriter bufferedWriter = new BufferedWriter(
					new OutputStreamWriter(new FileOutputStream(des), Charset.forName("GBK")));
			while ((text = bufferedReader.readLine()) != null) {
				bufferedWriter.write(text);
				System.out.println(text);
			}
			bufferedReader.close();
			bufferedWriter.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@Test
	public void userScanner() {
		Scanner scanner = new Scanner(System.in);
		while (scanner.hasNextLine()) {
			String string = scanner.nextLine();
			System.out.println(string);
			if ("exit".equals(string)) {
				return;

			}

		}
	}

}

以上是对文件的一些基本的输入输出

InputStream→BufferedInputStream→InputStreamReader→FileReader→BufferedReader

OutputStream→BufferedOutputStream→OutputStreamWriter→FileWriter→BufferedWriter

java中的in与out是基于内存为标准定义的, out:内存到磁盘是输出 in:磁盘到内存

© 著作权归作者所有

下一篇: select2 demo
JavaSon712
粉丝 11
博文 187
码字总数 34711
作品 0
延安
程序员
私信 提问

暂无文章

HeyUI组件库按需加载功能上线,盘点HeyUI组件库有哪些独特功能?

HeyUI组件库 如果你还不了解heyui组件库,欢迎来我们的官网或者github参观。 官网 github 当然,如果能给我们一颗✨✨✨,那是最赞的了! 按需加载 当heyui组件库的组件越来越多的时候,按需...

vvpvvp
15分钟前
2
0
Dockerfile文件详解

Dockerfile文件详解 什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker bui...

Jeam_
28分钟前
0
0
阿里云PolarDB发布重大更新 支持Oracle等数据库一键迁移上云

5月21日,阿里云PolarDB发布重大更新,提供传统数据库一键迁移上云能力,可以帮助企业将线下的MySQL、PostgreSQL和Oracle等数据库轻松上云,最快数小时内迁移完成。据估算,云上成本不到传统...

zhaowei121
36分钟前
0
0
在数据数据探索过程中的一些常用操作

###pandas在做数据探索时,分组统计均值和中位数参考资料:http://www.cnblogs.com/nxld/p/6058591.htmlhttp://python.jobbole.com/85742/按字典重新赋值,可以直接使用pandas中的repla...

KYO4321
39分钟前
0
0
好程序员分享干货 弹性分布式数据集RDD

一、RDD定义 RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变(数据和元数据)、可分区、里面的元素可并行计算的集合。其特点在于自动容...

好程序员IT
40分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部