- 浏览: 1589842 次
- 来自: 上海
文章分类
- 全部博客 (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>遍历(三十五)
FileWriter
IO异常的处理方式
对已有文件的续写
window下的换行
FileReader
当个字符读取
字符数组读取
练习:读取一个java文件,并打印在控制台上.
复制
/** * IO(Input Output)流 * 作用: * 1)IO流用来处理设备之间的数据传递 * 2)Java对数据的操作是通过流的方式 * 3)Java用于操作流的兑现个都在IO包中 * 4)流按操作的数据分为两种:字节流 (通用) 和 字符流(基于字节流) * 5)流按流向来分:输出流 和 输入流 * * IO流常用的基类 * 字节流的抽象基类 * InputStream,OutputStream. * 字符流的抽象基类 * Reader,Writer. * 注:由这四个类派生出来的子类名称都是一其父类名称作为子类的后缀 * 如:InputStream的子类,FileInputStream * Reader的子类,FileReader * * 既然IO流是用户操作数据的 * 那么数据的最长体现形式是:文件 * * 那么先以操作文件为主来演示: * 需求:在硬盘上,创建一个文件并写入一些文字数据. * * 找到一个专门用于操作文件的Writer子类对象,FileWriter ,后缀名是父类名,前缀名是该流对象的功能. */ import java.io.FileWriter; import java.io.IOException; public class IODemo { public static void main(String[] args) throws IOException { //字符编码 //ASCII--中国(gbk)--国际组织(uncode(无论什么字符都用两个字节表示))-->UTF-8(优化uncode) //创建一个FileWriter对象,该对象一被初始化必须要明确被操作的文件. //而且该文件会被创建到指定的目录下,如果该目录下已有同名文件,则被覆盖. //其实该步骤就是在明确数据要存放的目的地. FileWriter fw=new FileWriter("demo.txt"); //调用write方法,将字符串写入到流中 fw.write("我想写入到文件中."); //刷行流对象中的缓冲的数据 //将数据刷到目的地中. //发现写的时候不是换行写,是接着在后面写 fw.flush(); //不刷新 ,上面流中的数据是不保存到文件中. fw.write("没关闭我就继续写,哈哈哈1."); fw.flush(); //关闭资源,但是在关闭之前会刷行一次内存中缓冲的数据. //然后将数据刷到目的地中. //和flush的区别:flush刷新后,流还可继续使用,close刷新后,会将流关闭,流不能用了. fw.write("没关闭我就继续写,哈哈哈2."); fw.close(); //fw.write("没关闭我就继续写,哈哈哈3."); //发现挂了,说java.io.IOException: Stream closed //demo.txt最后的结果 //我想写入到文件中.没关闭我就继续写,哈哈哈1.没关闭我就继续写,哈哈哈2. } }
IO异常的处理方式
对已有文件的续写
window下的换行
/** * IO异常的处理方式 * * 对已有文件的续写 */ import java.io.FileWriter; import java.io.IOException; public class FileWriterDemo2 { public static void main(String[] args) throws IOException { method_1(); } //对已有的文件的数据的续写 (没有处理异常,注意) public static void method_1() throws IOException{ //传递一个true 擦恕,代表不覆盖已有的文件,并在已有文具店 末尾处进行续写. FileWriter fw=new FileWriter("demo.txt",true); fw.write("nihao\r\n哈哈");//换行: window: \r\n linux:\n fw.close(); } //IO异常的标准处理方式 public static void method(){ FileWriter fw=null; try{ fw=new FileWriter("k:\\demo.txt");//系统找不到指定的路径 fw.write("开课写数据到流缓冲中!"); //fw.close(); //异常后也需要处理 所以要放到 finally 里面 }catch(IOException e){ e.printStackTrace(); }finally{ //fw.close(); //直接放到这里还不行,因为这句还会出异常. try { if(fw!=null)//系统找不到指定的路径 fw.close(); } catch (Exception e) { e.printStackTrace(); } } } }
FileReader
当个字符读取
字符数组读取
import java.io.FileReader; import java.io.IOException; public class FileReaderDemo { public static void main(String[] args) throws IOException { method_2(); //method_1(); } //第二种方式的变形 public static void method_2() throws IOException{ FileReader fr=new FileReader("demo.txt"); char[] buf=new char[1024]; //1024*2=2k int num=0; while((num=fr.read(buf))!=-1){ System.out.print(new String(buf,0,num)); } } //第二种方式:通过字符数组进行读取 (没有做异常处理) public static void method_1() throws IOException{ //demo.txt里面文本是: 我爱中华人民共和国我爱人民 FileReader fr=new FileReader("demo.txt"); char[] chs=new char[3]; int num=fr.read(chs); System.out.println("num="+num+"...."+new String(chs));//num=3....我爱中 int num1=fr.read(chs); System.out.println("num="+num1+"...."+new String(chs));//num=3....华人民 int num2=fr.read(chs); System.out.println("num="+num2+"...."+new String(chs));//num=3....共和国 int num3=fr.read(chs); System.out.println("num="+num3+"...."+new String(chs)); //num=3....我爱人 //为什么会出现 "民爱人" //是将上一次的chs['我','爱','人']-->中的 "我"-->替换成 读取到的"民" int num4=fr.read(chs); System.out.println("num="+num4+"...."+new String(chs,0,1)); //num=1....民爱人 System.out.println("num="+num4+"...."+new String(chs)); //num=1....民爱人 //打印的还是上一次 保存的在数组中的数据 int num5=fr.read(chs); System.out.println("num="+num5+"...."+new String(chs)); //num=-1....民爱人 fr.close(); } //第一种方式: 使用 read()每次读取一个 字符 public static void method() throws IOException{ //创建一个文件读取流对象,和指定名称的文件相关联. //要保证该文件是已经存在的,如果不粗壮奶,会发生异常. FileNotFoundException FileReader fr=new FileReader("demo.txt"); //调用读取流对象的read方法 //read():一次读一个字符,而且会自动往下读,如果没有读取完了就返回 -1 /*int ch=fr.read(); System.out.println("ch="+(char)ch); int ch2=fr.read(); System.out.println("ch2="+(char)ch2);*/ //方式一 /*while(true){ int ch=fr.read(); if(ch==-1) break; System.out.println("ch="+(char)ch); }*/ //方式二 高效点 int ch=0; while((ch=fr.read())!=-1){ System.out.print((char)ch); } //关闭资源 fr.close(); } }
练习:读取一个java文件,并打印在控制台上.
import java.io.FileReader; import java.io.IOException; /** * 练习:读取一个java文件,并打印在控制台上. */ public class FileReaderTest { public static void main(String[] args) throws IOException { FileReader fr=new FileReader("E:\\workspace4\\exam\\src\\com\\itheima\\day18\\p1\\FileReaderDemo.java"); char [] buf=new char[1024]; int num=0; while((num=fr.read(buf))!=-1){ System.out.println(new String(buf,0,num)); } } }
复制
import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /** * 需求:将CC盘的一个文本复制到D盘 * 复制原理: * 其实就是将C盘下的文件数据存储到D盘的一个文件中. * * 步骤: * 1) 在D盘中创建一个文件,用户存储C盘文件中的数据 * 2)定义读取流和C盘文件关联. * 3)通过不断的读写完成数据的存储. * 4)关闭资源 */ public class CopyText { public static void main(String[] args) throws IOException { copy_2(); //copy_1(); } //使用 字符数组进行copy 提高效率 public static void copy_2(){ FileWriter fw=null; FileReader fr=null; try { fw=new FileWriter("SystemDemo_copy.txt"); fr=new FileReader("E:\\workspace4\\exam\\src\\com\\itheima\\day18\\SystemDemo.java"); char[] cbuf=new char[1024]; int len=0; while((len=fr.read(cbuf))!=-1){ fw.write(cbuf, 0, len); fw.flush(); } } catch (Exception e) { e.printStackTrace();//读写失败 }finally{ if(fw!=null) try{ fw.close(); }catch(IOException e){ e.printStackTrace(); } if(fr!=null) try{ fr.close(); }catch(IOException e){ e.printStackTrace(); } } } //从C盘读取一个字符 ,就往D盘写一个字符 public static void copy_1() throws IOException{ //创建 目的地. FileWriter fw=new FileWriter("FileReaderDemo_copy.txt"); //与已有文件关联 FileReader fr=new FileReader("E:\\workspace4\\exam\\src\\com\\itheima\\day18\\p1\\FileReaderDemo.java"); int ch=0; while((ch=fr.read())!=-1){ fw.write(ch); //fw.flush(); } fw.close(); fr.close(); //数据不多可以直接关闭 } }
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 997public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2281经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5654package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 986import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1055/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1008//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1823更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1416import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 814import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2396import 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 1172import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 801import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1145import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3892import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 964/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1021import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1840Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1004/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2230package out; import ja ...
相关推荐
本教程《黑马程序员_毕向东_Java基础视频教程第18天-13-IO流(拷贝文本文件)》专注于讲解如何利用IO流来实现文本文件的复制操作。这个过程涉及到了对文件读取、数据缓冲以及写入等基础知识,对于初学者来说是理解和...
在本教程“黑马程序员_毕向东_Java基础视频教程第18天-11-IO流(文本文件读取方式二)”中,主讲人毕向东将深入讲解如何使用Java有效地读取文本文件,特别是第二种常用的方法。以下是关于Java IO流和文本文件读取的...
在这个“黑马程序员_毕向东_Java基础视频教程第18天-12-IO流(文本文件读取练习)”中,毕向东老师将深入讲解如何使用Java IO流来读取文本文件。Java IO流提供了多种类和方法,使得开发者可以灵活高效地处理输入和输出...
Java基础18天 Typora笔记概述 这是一份专为Java初学者准备的学习资源,由魔乐科技提供,旨在帮助用户在18天内建立起坚实的Java编程基础。Typora是一款简洁而高效的Markdown编辑器,使得笔记整理和阅读更加便捷。...
精品java学习教程,原理讲解+...第15-18天:数组到集合 第19天:文件操作IO 第20、21天:IO流文件操作类图 第22天:其他流 第23天:多线程 第24天:多线程深入 第25天:GUI 第26天:网络变成 第27天:反射和设计模式
8. **IO流**:理解输入输出流的概念,包括文件操作、字符流和字节流的使用,以及缓冲区的概念。 9. **多线程**:学习如何创建和管理线程,理解同步机制(如synchronized关键字,wait(),notify()和notifyAll()方法...
"18天Java学习之经典笔记"是一份专为快速掌握Java基础知识而设计的学习资料,适用于那些希望在短时间内复习、备考或者准备面试的人员。这份笔记涵盖了Java的核心概念,通过18天的学习计划,帮助读者逐步理解并熟练...
本资源“java18天笔记资料(推荐)”显然是一份全面且深入的学习指南,旨在帮助初学者或有经验的开发者在18天内系统地掌握Java的核心概念和技术。这份笔记可能涵盖了从基础语法到高级特性的全方位讲解,是提升Java...
在"达内core java 18天课程全代码"这个课程中,我们可以期待深入学习Java这门强大的编程语言的核心概念和技术。Java作为一款面向对象的编程语言,广泛应用于企业级应用、Android开发、大数据处理等多个领域。以下是...
9. **输入/输出流**:学习文件操作,包括字节流和字符流,以及缓冲流、对象序列化和文件复制。 10. **异常处理**:理解如何使用try-catch-finally语句块来捕获和处理异常,以及自定义异常。 11. **多线程**:掌握...
16 第16天IO流.docx 17 第17天字节流.docx 18 线程.docx 19 网络编程.docx 2 拓薪教育-java基础语法.docx 3 J2SE程序的流程控制.docx 5 第5天面向对象.docx 6 static静态关键字和单例模式.docx 7 第七天类的继承....
- **Java之父**: James Gosling,被尊称为“Java之父”。 - **诞生日期**: 1995年5月23日。 - **重要版本**: - 1998年12月发布的1.2版本标志着Java 2的开始。 - 2004年12月发布的1.5版本被称为Java 5.0。 - **三大...
5. **IO流**:Java的输入输出流系统用于读写文件、网络通信等,包括字符流和字节流,以及缓冲流、转换流等高级用法。 6. **线程与并发**:Java提供了强大的多线程支持,学习如何创建和管理线程,理解同步、互斥和...
Java的IO流系统支持对文件、网络等的数据读写,分为字节流和字符流两大类。 9. **集合框架** 包括List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)和Map(如HashMap、TreeMap)接口及其实现类,用于...
14. **IO流**:Java的输入/输出流系统支持读写文件、网络通信等,分为字节流和字符流。 15. **多线程**:Java内置对多线程的支持,理解线程同步和互斥的概念,如synchronized关键字和wait/notify机制。 16. **反射...
在Java的25天学习之旅中,你可以期待涵盖以下关键知识点: 1. **Java环境搭建**:首先,你需要了解如何安装JDK(Java Development Kit),设置环境变量,并通过`javac`和`java`命令进行编译和运行程序。 2. **基本...
在这一阶段,学习者将学习输入/输出流的概念,包括文件I/O、字节流和字符流,以及如何使用缓冲区进行高效的数据传输。 **第16-17天:多线程** Java支持多线程编程,学习者会学习如何创建和管理线程,理解同步和互斥...
"Java 入门 21天 ppt" 是一套专为初学者设计的学习资源,旨在帮助新接触Java的人在21天内掌握基础概念并建立起编程思维。 在21天的学习计划中,通常会涵盖以下关键知识点: 1. **Java简介**:介绍Java的历史、特点...
15. **输入输出流**:Java的I/O流系统支持读写文件、网络通信等功能,包括字节流、字符流和对象流。 16. **线程**:Java内置对多线程的支持,线程是程序执行的独立路径,学习如何创建和管理线程至关重要。 17. **...
8. **输入/输出流**:理解I/O流的概念,包括文件读写、字节流和字符流的操作。 9. **集合框架**:包括List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等具体实现类的使用。 10. **泛型**:学习...