首页 > 代码库 > java的IO学习,字节流与字符流的编码讲解
java的IO学习,字节流与字符流的编码讲解
字节流与字符流
字节流可以处理所有类型的数据(图片、视频等),在java中对应的类都为“stream”结尾
1字节=8位二进制=具体存储空间
字符流仅能处理纯文本的数据,在java中对应的类都是以“reader”或者“writer”结尾
如汉字,符号等
import org.junit.Test; public class IOTest { /** * BufferedInputStream BufferedOutputStream * 利用字节缓冲流实现文件的复制 * @throws IOException * */ @Test public void bufferedInputStreamAndbufferedOutputStream() throws IOException{ //新建字节的输入输出 InputStream in = new FileInputStream("hellow.txt"); BufferedInputStream bStream = new BufferedInputStream(in); OutputStream out = new FileOutputStream("hellow2.txt"); BufferedOutputStream bOutputStream = new BufferedOutputStream(out); //创建缓冲数组 byte[] bytes = new byte[100]; //进行复制 int len = 0; while((len = bStream.read(bytes))!= -1) { bOutputStream.write(bytes, 0, len); } //关闭流 bStream.close(); bOutputStream.close(); }/** * bufferdeReader And bufferedWriter * 利用缓冲流实现文件的复制 * @throws IOException * **/ @Test public void bufferdeReaderAndbufferedWriter() throws IOException { // 新建字符的输入输出 Reader in = new FileReader("hellow.txt"); BufferedReader bReader = new BufferedReader(in); Writer out = new FileWriter("hellow2.txt"); BufferedWriter bWriter = new BufferedWriter(out); // 进行复制 String line = null; int i = 0; while ((line = bReader.readLine()) != null) { if (i != 0) bWriter.write("\n"); bWriter.write(line, 0, line.length()); i++; } // 关闭流 bReader.close(); bWriter.close(); }/** *reader writer * 利用字符输入输出流, 完成 hello.txt 文件的复制. * 把该文件复制为 hello2.txt */ @Test public void readerAndwriter() throws IOException { //新建字符的输入输出 Reader reader = new FileReader("hellow.txt"); Writer writer = new FileWriter("hellow2.txt"); //定义数组,用于读写文件 char[] cbuf = new char[100]; //读写文件 int len; while((len = reader.read(cbuf)) != -1) { writer.write(cbuf, 0, len); } //关闭流 reader.close(); writer.close(); }/***InputStream OutputStream * 利用字节输入输出流, 完成 hello.txt 文件的复制. * 把该文件复制为 hello2.txt * @throws IOException */ @Test public void testCopyFile() throws IOException{ //1. 创建定位到 hello.txt 的文件的输入流 InputStream in = new FileInputStream("枚举类.avi"); //2. 创建定位到 hello2.txt 的文件输出流 OutputStream out = new FileOutputStream("枚举类2.avi"); //3. 创建一个 byte 数组, 用于读写文件 byte [] buffer = new byte[1024 * 10]; int len = 0; //4. 读写文件: //in.read(buffer); out.write(buffer, 0, len); while((len = in.read(buffer)) != -1){ out.write(buffer); } //5. 关闭流资源. out.close(); in.close(); } /** * 测试字节输出流 OutputStream* @throws IOException */ @Test public void testOutputStream() throws IOException{ OutputStream out = new FileOutputStream("abcd.txt"); String content = "www.atguigu.com\nHello Java!"; out.write(content.getBytes()); out.close(); } /** * 测试字符输入流. Reader* @throws IOException */ @Test public void testReader() throws IOException{ //利用字符输入流读取 hello.txt 文档的内容, 输出到控制台. Reader reader = new FileReader("hello.txt"); char [] buffer = new char[10]; int len = 0; while((len = reader.read(buffer)) != -1){ for(int i = 0; i < len; i++){ System.out.print(buffer[i]); } } reader.close(); } /** * 测试字节输入流 InputStream* @throws IOException */ @Test public void testInputStream() throws IOException{ //1. 创建了一个字节输入流. InputStream in = new FileInputStream("hello.txt"); //2. 读取文件的内容 //2.1 第一读取一个字节. 效率很低, 不建议这样读. -1 表示读取到文件的结尾处 // int result = in.read(); // // while(result != -1){ // System.out.print((char)result); // result = in.read(); // } //2.2 一次读取一组: 一组字符. //返回一次实际读取的字节数, 若为 -1 表示读取到文件的结尾 // byte [] buffer = new byte[10]; // int len = 0; // // while((len = in.read(buffer)) != -1){ // for(int i = 0; i < len; i++){ // System.out.print((char)buffer[i]); // } // } //2.3 把内容读取到字节数组的部分连续的元素中. byte [] result = new byte[1024 * 10]; in.read(result, 10, in.available()); //3. 关闭流资源 in.close(); } /** * File: 代表物理的意义的文件或目录 * @throws IOException */ @Test public void testFile() throws IOException{ //1. 创建 File 对象 File file = new File("hello.txt"); //2. 测试 File 对象的方法. //2.1 文件名相关的方法 String fileName = file.getName(); System.out.println(fileName); //2.2 访问文件的绝对路径 String path = file.getAbsolutePath(); System.out.println(path); //2.3 为文件重命名 //file.renameTo(new File("d:\\hello.txt")); //3. 文件检测相关的方法 System.out.println(file.exists()); File dir = new File("atguigu"); System.out.println(dir.isFile()); //4. 获取文件的常规信息 System.out.println(file.length()); //5. 文件操作相关. File file2 = new File("abcd.txt"); file2.createNewFile(); } }
java的IO学习,字节流与字符流的编码讲解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。