JavaSE 10 —IO流
1.IO流简介
Java的输入输出功能来自java.io包中的InputStream类,OutputStream类,Reader类和Writer类以及继承它们的各种子类。每一个数据流都是一个对象,它们提供了各种支持“读入”与写出操作的流类。
File类用于封装系统的文件和目录的相关信息。在该类中定义了一些与平台无关的方法来操作文件。
创建File对象可以通过3种方式:
new File(String pathName)
new File(String parent,String child)
new File(File parent,String child)
2.字节输入输出流
1)字节输入流抽象类InputSream
该类是输入留的抽象类,定义了操作输入留的各种方法。
实例:创建InputStream实例is 并将其赋值为System类的in属性,定义为控制台输入流,从is输入留中获取字节信息,用这些字节创建字符串,并打印到控制台输出。
2)字节输出留抽象类OutputStream
该类是字节输出流的抽象类,定义了输出流的各种操作方法。
实例:创建OutputStream实例out,并将其赋值为System.out标准输出流。通过write()方法向流中写入数据。
文件字节输入流可以从指定路径的文件中读取字节数据。文件字节输入流类继承自InputStream类,并实现了读取输入流的各种方法。
语法如下:
new FileInputStream(File file);
例如:
try{
FileInputStream fileInputStream = new FileInputStream(file);
}catch(FileNotFoundException e){
e.printStackTrace();
}
4)文件字节输出流类FileOutputStream
文件字节输出流关联指定路径的文件,数据通过文件字节输出流以字节单位输出并保存到文件中。
语法:
new FileOutputStream(file);
new FileOutputStream(filePath);
实例:创建OutputStream实例out,并将其赋值为System.out标准输出流。通过write方法向流中写入数据。
1)字符输入流抽象类Reader
该类是字符输入流的抽象类,定义了操作字符输入流的各种方法。
2)字符输出流抽象类Writer
该类是字符输出流的抽象类,定义了操作字符输入流的各种方法。
3)文件字符输入L流FileReader
文件字符输出流与文件字节输入流的功能相似,但是传送数据的方式不一样,字节流以字节为单位传送数据,可以是文本,视频,音频,图片。字符流以字符为单位传送数据,只能传送文本类型。
语法:
new File(File file);
例如:
File file = new File(“C://word.txt”);
try{
FileReader FileReader = new FileReader(file);
}catch(FileNotFoundException e1){
e1.printStackTracer();
}
实例:创建类FileInAndOutChar,读取C盘中的word.txt文件,并输出在控制台。
文件字符输出流类(FileWriter)继承自Writer类,提供了向文件输出数据的各种方法,数据通过文件字符输出流以字符为单位输出并保存在文件中。
语法:
new FileWriter(file);
综合实例:
1. 创建类CopyFile,在该类中创建copy()方法,改方法接受文件数组和目标文件夹两个参数,如果目标文件夹不存在,则调用mkdir()方法创建文件夹,然后在循环中将文件数组中的每个文件对象写到文件夹中。
1.IO流简介
Java的输入输出功能来自java.io包中的InputStream类,OutputStream类,Reader类和Writer类以及继承它们的各种子类。每一个数据流都是一个对象,它们提供了各种支持“读入”与写出操作的流类。
File类用于封装系统的文件和目录的相关信息。在该类中定义了一些与平台无关的方法来操作文件。
创建File对象可以通过3种方式:
new File(String pathName)
new File(String parent,String child)
new File(File parent,String child)
2.字节输入输出流
1)字节输入流抽象类InputSream
该类是输入留的抽象类,定义了操作输入留的各种方法。
实例:创建InputStream实例is 并将其赋值为System类的in属性,定义为控制台输入流,从is输入留中获取字节信息,用这些字节创建字符串,并打印到控制台输出。
import java.io.*; public class InputMessage { public static void main(String[] args){ InputStream is = System.in; try{ byte[] bs = new byte[1024]; while(is.read(bs)!=-1){ String str = new String(bs).trim();//去掉字符串开头和结尾的空格 System.out.println(str); } is.close() }catch(IOException e){ e.printStackTrace(); } } }虽然Java在程序结束时会自动关闭所有打开的流,但是当使用完流后,显示地关闭任何打开的流仍时一个好习惯。
2)字节输出留抽象类OutputStream
该类是字节输出流的抽象类,定义了输出流的各种操作方法。
实例:创建OutputStream实例out,并将其赋值为System.out标准输出流。通过write()方法向流中写入数据。
import java.io.*; public class OutPutData { public static void main(String[] args){ OutStream out = new System.out; try{ byte[] bte = "Hello world\n".getBytes(); out.write(bte); bte = "oh fuck you\n".getBytes(); out.write(bte); out.close(); }catch(IOException e){ e.printStackTrace(); } } }3)文件字节输入流类FileInputStream
文件字节输入流可以从指定路径的文件中读取字节数据。文件字节输入流类继承自InputStream类,并实现了读取输入流的各种方法。
语法如下:
new FileInputStream(File file);
例如:
try{
FileInputStream fileInputStream = new FileInputStream(file);
}catch(FileNotFoundException e){
e.printStackTrace();
}
4)文件字节输出流类FileOutputStream
文件字节输出流关联指定路径的文件,数据通过文件字节输出流以字节单位输出并保存到文件中。
语法:
new FileOutputStream(file);
new FileOutputStream(filePath);
实例:创建OutputStream实例out,并将其赋值为System.out标准输出流。通过write方法向流中写入数据。
import java.io.*; public class FileCreate { public static void main(String[] args){ FIle file = new FIle("C:/","word.txt"); try{ if(!file.exists()) file.createNewFile(); FileOutputStream out = new FileOutputStream(file); byte buy[] = "Hello world,Hello China".getBytes(); out.write(buy); out.close(); }catch(Exception e){ e.printStackTrace(); } try{ FileInputStream in = new FileInputStream(file); byte byt[] = new byte[1024]; int len = in.read(byt); System.out.println(new String(byt,0,len)); in.close(); }catch(Exception e){ e.printStrackTrace(); } } }3.字符输入输出流
1)字符输入流抽象类Reader
该类是字符输入流的抽象类,定义了操作字符输入流的各种方法。
2)字符输出流抽象类Writer
该类是字符输出流的抽象类,定义了操作字符输入流的各种方法。
3)文件字符输入L流FileReader
文件字符输出流与文件字节输入流的功能相似,但是传送数据的方式不一样,字节流以字节为单位传送数据,可以是文本,视频,音频,图片。字符流以字符为单位传送数据,只能传送文本类型。
语法:
new File(File file);
例如:
File file = new File(“C://word.txt”);
try{
FileReader FileReader = new FileReader(file);
}catch(FileNotFoundException e1){
e1.printStackTracer();
}
实例:创建类FileInAndOutChar,读取C盘中的word.txt文件,并输出在控制台。
public class FileInAndOutChar { public static void main(String[] args){ File file = new File("C://word.txt"); try{ if(!file.exists()) System.out.println("Cannot open it!"); else{ FileReader fr = new FileReader(file); char[] data = new char[256]; int length = 0; while((length = fr.read(data))>0){ String str = new String(data,0,length); System.out.println(str); } fr.close(); } }catch(Exception e){ e.printStackTrace(); } } }4)文件字符输出流FileWriter
文件字符输出流类(FileWriter)继承自Writer类,提供了向文件输出数据的各种方法,数据通过文件字符输出流以字符为单位输出并保存在文件中。
语法:
new FileWriter(file);
综合实例:
1. 创建类CopyFile,在该类中创建copy()方法,改方法接受文件数组和目标文件夹两个参数,如果目标文件夹不存在,则调用mkdir()方法创建文件夹,然后在循环中将文件数组中的每个文件对象写到文件夹中。
package qijia.si; import java.io.*; public class JavaTest { public static void copy(File[] fl,File file){ if(!file.exists()); file.mkdir(); for(int i=0;i<fl.length;i++){ if(fl[i].isFile()){ try{ FileInputStream fis = new FileInputStream(fl[i]); FileOutputStream out = new FileOutputStream(new File(file.getPath()+File.separator+fl[i].getName())); int count = fis.available(); byte[] data = new byte[count]; if((fis.read(data))!=-1){ out.write(data); //复制内容 } out.close(); fis.close(); }catch(Exception e){ e.printStackTrace(); } } if(fl[i].isDirectory()){ File des = new File(file.getPath()+File.separator+fl[i].getName()); des.mkdir(); copy(fl[i].listFiles(),des); //递归调用方法本身 } } } }2. 创建类BranchWriter,在主方法中定义文件对象,将该对象作为参数创建BufferedWriter类实例,调用改实例的wirter()方法将数据写入文件中,然后调用newLine()方法写入换行符,实现分行向文件中写入数据。
package qijia.si; import java.io.*; public class JavaTest { public static void main(String[] args){ String filePath = "C://BranchWriter.txt"; File file = new File(filePath); try{ if(!file.exists()) file.createNewFile(); FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); bw.write("Hello world".toCharArray()); bw.newLine(); bw.write("China!"); bw.newLine(); bw.flush(); //刷新缓冲区 System.out.println("成功!"); }catch(Exception e){ e.printStackTrace(); } } }
发表评论
-
JavaSE20—绘图
2011-05-18 20:10 1506JavaSE20—绘图 1. 绘制图形 Graphics类是 ... -
JavaSE19—Swing高级控件(下)
2011-05-15 17:28 1091JavaSE19—Swing高级控件(下) 1. 工具栏与对话 ... -
JavaSE18—Swing高级控件(上)
2011-05-12 22:22 1499JavaSE18—Swing高级控件(上) 1. 为窗体添加 ... -
JavaSE17—GUI事件
2011-05-08 20:52 1045JavaSE17—GUI事件处理机 ... -
JavaSE15—多线程
2011-05-03 19:10 832JavaSE15—多线程 1. 多线程简介 程序:程序是计算 ... -
JavaSE14—窗体程序开发(下)
2011-05-01 16:55 971JavaSE14—窗体程序开发(下) 1. 基础组件(续) ... -
JavaSE13—窗体程序开发(中)
2011-05-01 16:53 1135JavaSE13—窗体程序开发(中) 1、 布局方式 1) ... -
JavaSE12—窗体程序开发(上)
2011-04-29 16:59 1466JavaSE12—窗体程序开发 ... -
JavaSE11—网络编程初步
2011-04-29 16:58 944JavaSE11—网络编程初步 1. 背景知识 1) 端口 ... -
JavaSE09—Java类集框架
2011-04-26 19:32 839JavaSE09—Java类集框架 1. 类集接口 接口: ... -
JavaSE08—包,访问权限及异常处理
2011-04-26 19:31 636JavaSE08—包,访问权限 ... -
JavaSE07—Java常用类库
2011-04-26 19:30 630JavaSE07—Java常用类库 1. String类和S ... -
JavaSE06—类的其他问题
2011-04-26 19:28 672JavaSE06—类的其他问题 1. Objec ... -
JavaSE05—抽象类与接口
2011-04-26 19:27 622JavaSE05—抽象类与接口 1. ... -
JavaSE04—类的封装,继承与多态
2011-04-26 19:26 689JavaSE04—类的封装,继 ... -
JavaSE03—类和对象
2011-04-26 19:24 631JavaSE03—类和对象 1. ... -
Java SE02——数组
2011-04-26 19:23 631Java SE02——数组 1. 数组的声 ... -
Java SE01——原生数据类型
2011-04-26 19:18 833Java SE01——原生数据类型 1.Java中的数据类 ...
相关推荐
JavaSE文件IO流详解
里面包含了字节输入输出流、字符输入输出流的接口继承以及具体...适用于:初学者:能更清晰地认清javaSE的IO流部分接口与实现类之间的关系。 其他人:要使用IO部分但忘记具体的实现类和常用方法可以充当帮助文档使用。
这是我在学校学习时候的javaIO流,我们的老师讲的很好的哦
使用IO流实现文本存储,集合存放用户信息,使用了stream流等java8新特性,适用于大学生大作业、课设,本人原创
看B站视频项目总结的系列文档,仅供个人学习使用
本资源内详尽描述了Java基础的IO操作,包括基本的文件读取、写入、复制、分割、合并等动作,详情另可参见我的博客http://blog.csdn.net/zhongkelee/article/details/47061013
Try块里面存放的是有可能发生异常的代码,通常和catch块一起使用,catch块用于处理try块中抛出的异常,finally块不是必须的,通常将释放资源(例如IO流的close方法)的代码放到finally块里面 注意:finally和Final还有...
javase 超市管理系统 IO流 读取数据 可购物,可积分,可兑换礼物
入门级笔记,适合查漏补缺。
1.2 文件流 1.2.1 FileInputStream(文件字节输入流) 1.2.2 FileOutputStream(文件字节输出流)
适用于java初学者,通过三层架构思想进行开发设计,主要功能有增删改查,预约续借积分管理等功能。通过io流进行数据存储,涉及的知识点有多线程,io,网络编程等。
JavaSE的编程资料,包括基础,集合框架,IO流等等
该项目为Javase技术点测试,包括了线程、集合、内部类,各设计模式、枚举、io流、自定义注解等编程思想书籍几乎所以技术点,欢迎下载
File类,输入和输出流,字节-字符转换流,打印流PrintStream,对象序列化
Java基础部分笔记,包含IO流、多线程、网络编程、Lambda表达式,适合巩固基础以及新手查看,都是Java基础的精华
10、JavaSE:IO流 11、JavaSE:多线程 12、JavaSE:网络编程 13、JavaSE:Gui编程 14、JavaSE:注解和反射 15、MySQL和JDBC 16、前端:Html5 17、前端:CSS3 18、前端:JavaScript、jQuery 19、JavaWeb 20、MyBatis ...
javase部分思维导图,包括数据库,面向对象,集合,io流, 多线程,异常,网络编程
本Java视频教程适合有一定编程语言基础的学员观看,在本Java视频教程中讲解了Java面向对象、异常、数组、常用类、集合、IO流、线程、反射机制。该视频教程基于Java13进行讲解,Java13是目前Java最新版本。视频中讲师...
10、JavaSE:IO流 11、JavaSE:多线程 12、JavaSE:网络编程 13、JavaSE:Gui编程 14、JavaSE:注解和反射 15、MySQL和JDBC 16、前端:Html5 17、前端:CSS3 18、前端:JavaScript、jQuery 19、JavaWeb ...
内存操作流,System对IO流的支持,缓冲区读取,Scanner类,字符编码问题,装饰着模式Decorator