- 浏览: 1590449 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
java之19天 IO字节流 和 缓冲区 (二)
- 博客分类:
- Java
带行号的缓冲字符流
LineNumberReader
自定义带行号的缓冲字符流
字节流
字节流 练习:复制一个图片
* 演示mp3的复制,通过缓冲区完成
自定义字节流缓冲区
LineNumberReader
自定义带行号的缓冲字符流
import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; import java.io.Reader; /** * 基于带行号的 缓冲的类 */ public class LineNumberRreaderDemo { public static void main(String[] args) throws IOException { method(); //method_1(); } //使用自定义模拟的 行号缓冲类 public static void method() throws IOException{ FileReader fr=new FileReader("E:\\workspace4\\exam\\src\\com\\itheima\\day18\\SystemDemo.java"); MyLineNumberReader mnr=new MyLineNumberReader(fr); mnr.setLineNumber(101); String line=null; while((line=mnr.myReadLine())!=null){ System.out.println(mnr.getLineNumber()+":"+line); } mnr.close(); } //使用java自带的 public static void method_1() throws IOException{ FileReader fr=new FileReader("E:\\workspace4\\exam\\src\\com\\itheima\\day18\\SystemDemo.java"); LineNumberReader lnr=new LineNumberReader(fr); String line=null; lnr.setLineNumber(101); //从101开始 while((line=lnr.readLine())!=null){ System.out.println(lnr.getLineNumber()+":"+line); } lnr.close(); } } //练习:模拟一个带行号的缓冲区 简化 下面的类 class MyLineNumberReader1 extends MyBufferedReader1{ private int lineNumber; MyLineNumberReader1(Reader fr) { super(fr); } public String myReadLine() throws IOException{ lineNumber++; return super.myReaderLine(); } public void setLineNumber(int lineNumber){ this.lineNumber=lineNumber; } public int getLineNumber(){ return lineNumber; } } //发现下面的 的代码 有重复 class MyLineNumberReader{ private Reader r; private int lineNumber; public MyLineNumberReader(Reader r){ this.r=r; } public void setLineNumber(int lineNumber){ this.lineNumber=lineNumber; } public int getLineNumber(){ return lineNumber; } public String myReadLine() throws IOException{ StringBuilder sb=new StringBuilder(); lineNumber++; int ch=0; while((ch=r.read())!=-1){ if(ch=='\r') continue; if(ch=='\n') return sb.toString(); else sb.append((char)ch); } if(sb.length()>0) return sb.toString(); return null; } public void close() throws IOException{ r.close(); } }
字节流
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * 字符流 * Writer * Reader * * FileWriter * FileReader * * BufferedWriter * BufferedReader * * 字节流 * InputStream * OutputStream * * BufferedInputStream * BufferedOutputStream * *需求: 想要操作图片数据,这是就需要用到字节流 */ public class FileStream { public static void main(String[] args) throws IOException { // writeFile(); System.out.println("开始"); //readFile_1(); //readFile_2(); readFile_3(); System.out.println("结束"); } public static void writeFile() throws IOException{ FileOutputStream fos=new FileOutputStream("fos.txt"); fos.write("abc".getBytes()); //发现没有关闭 ,没有 刷新 文件中也有 文本了 fos.close(); //不写时候 ,文件中有文本 } //一次读取一个 public static void readFile_1() throws IOException{ FileInputStream fis=new FileInputStream("fos.txt"); int ch=0; while((ch=fis.read())!=-1){ System.out.println((char)ch); } fis.close(); } //一次读取一个数组 public static void readFile_2() throws IOException{ FileInputStream fis=new FileInputStream("fos.txt"); byte[] buf=new byte[1024]; int len=0; while((len=fis.read(buf))!=-1){ System.out.println(new String(buf,0,len)); } fis.close(); } //返回文档的长度 public static void readFile_3() throws IOException{ FileInputStream fis=new FileInputStream("fos.txt"); byte[] buf=new byte[fis.available()]; //定义好一个刚刚好大小的缓冲区 int num=fis.available(); //数据不大的时候 可以这样使用 ,拷贝大的电影的时候. System.out.println("文件中字符数量="+num); fis.read(buf); System.out.println(new String(buf)); fis.close(); } }
字节流 练习:复制一个图片
import java.io.FileInputStream; import java.io.FileOutputStream; /** * 字节流 练习:复制一个图片 * * 思路: * 1)用字节流读取流对象和图片关联 * 2)使用字节流对象创建一个图片文件,用于存储获取到的图片数据. * 3)通过循环读写,完成数据的存储. * 4)关闭资源. */ public class CopyPic { public static void main(String[] args) { copyPic(); } public static void copyPic(){ FileInputStream fis=null; FileOutputStream fos=null; try { fis=new FileInputStream("c:\\1.jpg"); fos=new FileOutputStream("c:\\2.jpg"); byte[] buf=new byte[1024]; int len=0; while((len=fis.read(buf))!=-1){ fos.write(buf,0,len); } } catch (Exception e) { e.printStackTrace(); }finally{ if(fis!=null) try { fis.close(); } catch (Exception e) { e.printStackTrace(); } if(fos!=null) try { fos.close(); } catch (Exception e) { e.printStackTrace(); } } } }
* 演示mp3的复制,通过缓冲区完成
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * 演示mp3的复制,通过缓冲区 * BufferedInputStream * BufferedOutputStream * */ public class CopyMp3 { public static void main(String[] args)throws IOException { long start=System.currentTimeMillis(); //copy_1(); copy_2();//速度快 1000ms long end=System.currentTimeMillis(); System.err.println(end-start); } //一个一个的读取 然后 一个一个的写 public static void copy_1() throws IOException{ BufferedInputStream bufis=new BufferedInputStream(new FileInputStream("D:\\Kugou\\元若蓝 - 绿袖子.mp3")); BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("C:\\元若蓝 - 绿袖子.mp3")); int by=0; while((by=bufis.read())!=-1){ bufos.write(by); } bufis.close(); bufos.close(); } //每次读取一个数组 ,然后写一个 public static void copy_2()throws IOException{ BufferedInputStream bufis=new BufferedInputStream(new FileInputStream("D:\\Kugou\\元若蓝 - 绿袖子.mp3")); BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("C:\\元若蓝 - 绿袖子.mp3")); byte[] buf=new byte[1024]; int len=0; while((len=bufis.read(buf))!=-1){ bufos.write(buf,0,len); } bufis.close(); bufos.close(); } }
自定义字节流缓冲区
import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class MyBufferedInputStreamDemo { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub MyBufferedInputStream mbufis=new MyBufferedInputStream(new FileInputStream("D:\\Kugou\\元若蓝 - 绿袖子.mp3")); BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("C:\\元若蓝 - 绿袖子.mp3")); int by=0; while((by=mbufis.myRead())!=-1){ bufos.write(by); } mbufis.myClose(); bufos.close(); } } class MyBufferedInputStream{ private InputStream in; private byte[] buf=new byte[1024]; private int pos=0,count=0; MyBufferedInputStream(InputStream in){ this.in=in; } //一次读取一个字节,从缓存区(字节数组)获取. public int myRead() throws IOException{ //通过in对象读取硬盘上的数据,并存储咋buf中 if(count==0){ count=in.read(buf); if(count<=0) return -1; pos=0; } byte b=buf[pos]; pos++; count--; return b&0xff; } public void myClose() throws IOException{ in.close(); } }
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 999public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2282经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5654package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 990import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1055/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1010//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1826更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1417import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 816import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2398import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 925// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1174import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 802import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1145import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3893import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 965/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1023import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1842Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1005/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2232package out; import ja ...
相关推荐
Java IO系统分为两大类:字节流和字符流。字节流主要用于处理任何类型的原始数据,如图片、音频文件或者二进制文件,而字符流则专注于处理基于文本的数据。本文将深入探讨这两类流的原理、用途以及它们之间的关联。 ...
2、常用21个IO流:FileWriter、FileReader、...3、JAVA IO流经典代码示例,示例从易到难。代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。 4、代码的结构可查看README文件。
### Java IO字符流和字节流详解 #### 一、引言 在Java编程中,输入输出(简称IO)操作是十分重要的一个方面。通过IO操作,我们可以读取文件、网络数据、用户输入等,也可以将数据写入到文件、网络、控制台等。Java...
### 利用缓冲区提高Java应用程序的IO性能 #### 摘要与背景介绍 Java作为一门具有跨平台特性的编程语言,在多个领域都获得了广泛的应用。随着Java应用的不断扩展,其性能问题逐渐成为人们关注的重点,尤其是输入...
在Java中,IO流分为两大类:字节流和字符流,每种流又有输入流和输出流之分,分别用于数据的读取和写入。 1. **字节流**: - 字节流处理的是8位的字节数据,是最基本的流类型。Java中的`InputStream`和`...
File 类、RandomAccessFile 类、字节流(文件字节流、缓冲字节流、基本数据类型字节流、打印流、对象序列化流、字节数组流)、字符流(缓冲字符流、文件字符流、转换流、格式化输出流、字符数组流) 这份代码源码...
在Java中,IO流被设计用来在不同的数据源和目的地之间传输数据,如文件、网络连接、内存缓冲区等。本教程将详细介绍Java IO中的字节流、字符流、缓冲流以及转换流,并通过IODemo实例来展示它们的用法。 ### 1. 字节...
### Java字符流和字节流详解 #### 一、引言 在Java中,I/O流主要用于处理输入输出操作,包括文件读写等。根据处理数据类型的不同,Java I/O流主要分为字节流和字符流两大类。字节流处理的是8位的字节数据,而字符流...
Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又可以进一步细分为输入流(InputStream/Reader)和输出流(OutputStream/Writer)...
1. 字节流:Java的`java.io`包中提供了处理字节流的类,如`InputStream`和`OutputStream`作为所有字节输入流和输出流的基类。它们的子类如`FileInputStream`和`FileOutputStream`分别用于文件的读写。 2. 字符流:...
Java IO字节流是Java平台中用于处理二进制数据的核心API,主要用于文件的读写操作。本资料“javaIO字节流读取文件方式总结共4页.pdf”详细介绍了Java字节流在读取文件时的各种方法和应用场景。本文将深入探讨这些...
本文件包“io流详解,字符流和字节流代码”显然是针对Java IO流的深入学习资源,包含了代码示例和可能的可视化解释。 IO流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。字节流处理的是8位的数据...
Java IO流的精讲涵盖了许多概念和技术,包括流的分类、流的方向、缓冲区的使用、字符编码以及一些实用的IO类和方法。在实例开发中,我们将深入理解这些概念并应用到实际项目中。 首先,Java IO流按照数据传输的方向...
Java IO库提供了丰富的类和接口来支持不同类型的流,包括字节流、字符流、对象流、缓冲流、转换流以及过滤流等。 字节流(Byte Stream)是处理原始二进制数据的流,分为输入流和输出流。InputStream和OutputStream...
- 还有一些缓冲字节流,如`BufferedInputStream`和`BufferedOutputStream`,它们通过内部缓冲区提高读写效率,减少磁盘或网络的交互次数。 2. **字符流**: - 字符流处理Unicode字符数据,主要由`Reader`和`...
IO流在Java中分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理的是Unicode编码的字符,而字节流则处理基本的8位字节数据。这两类流又各自分为输入流(Input Stream)和输出流(Output ...
在Java IO流中,节点流是指离数据源或程序最近的流处理流,主要有两种类型:字节流和字符流。字节流可以处理一切类型的数据,如纯文本、音频、视频等,而字符流只能处理纯文本数据。 2. 字节流: 字节流是Java IO...
在Java IO中,主要有两种流的概念:字符流(Character Stream)和字节流(Byte Stream)。它们是处理数据的基本方式,适用于不同场景。 字符流主要处理基于字符的数据,如文本文件,它包括Reader和Writer两个抽象...
字节流(InputStream和OutputStream)用于处理二进制数据,字符流(Reader和Writer)则用于处理字符数据。Java的IO操作,无论是读取文件、网络通信还是序列化对象,都是通过流的方式来实现。 流的分类包括了多种...
### Java IO流基础知识点 #### 一、IO流概述 - **定义**:在Java中,IO流(Input/Output Streams)是用来处理输入输出的基本工具。流是一种有序的数据集合,通常涉及从源到目的地的数据传输过程。源可以是文件、...