学习java第17天个人总结

Day17个人总结

一、字节输入输出流


1、字节输入流

超类:FileInputStream

创建流对象

FileInputStream fis = new FileInputStream(file);

其中构造方法中的(file)可以是String字符串的路径比如:”D:\\a\\b.txt”,或者是File对象

2、方法的使用:

构造方法

reader()方法(非常重要)

以上的close方法用于关闭流释放资源

3、使用while循环遍历数据过程

public class Test1 {

public static void main(String[] args) {

FileInputStream fis = null;

int len = 0;

try {

fis = new FileInputStream("D:\\a\\a.txt");

//读取文件

byte[] bs = new byte[10];

int num1 = 0;

while((num1 = fis.read(bs)) != -1){

System.out.println(Arrays.toString(bs));

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

4、字节输出流

超类:FileOnputStream

创建对象

FileOnputStream fos = new FileOnputStream(“D:\\a\\a.txt”);

通过以上创建对象,(“D:\\a\\a.txt”)中的a.txt如果存在将会使用存在的文件,如果不存在将会自动创建。

5、方法的使用:

构造方法:

方法摘要:

flush()方法

flush()方法用于刷新缓存区将缓存区内容强制写入文件

6、使用while循环将数据写入到文件

public class IntOutFilee {

public static void main(String[] args) {

//初始化

FileInputStream fir = null;

FileOutputStream fos = null;

//读取文件

try {

//创建读写文件对象

fir = new
FileInputStream("D:\\aaaa\\a.txt");

fos = new
FileOutputStream("D:\\aaaa\\b.txt");

//创建byte[] 工作中常用  要么偶数要么1024的倍数

byte[] b = new byte[10];

int count = 0;//记录读取的个数

//while循环读取文件

try {

while((count = fir.read(b)) != -1){

//写入文件

fos.write(b,0,count);

//强制清楚缓冲文件

fos.flush();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} catch
(FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if(fir != null){

try {

fir.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(fos != null){

try {

fos.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

}

注:以上是通过使用字节输入输出流做文件的复制操作过程

二、字符输入输出流


1、字符输入流

超类:Reader

创建对象:

File f1 = new File("D:\\a\\a.txt");

FileReader fr1 = null;

fr1 = new FileReader(f1);

2、构造方法的使用:

3、方法摘要:

和字节输入流不同的是字符输入流在读取文件使用read方法的时候使用的是char[]数组,而在字节输入流中使用的byte[]数组,使用方法使用字符输入流的使用如下:

public class Test1 {

public static void main(String[] args) {

FileReader fr1 = null;

try {

fr1 = new FileReader("C:/a/a.txt");

//读取文件

char[] chars = new char[1024];//工作中常用

int num1 = 0;

while((num1 = fr1.read(chars)) != -1){

System.out.println(num1);

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

4、字符输出流

构造方法:

方法使用如下:

使用如下:

//2)使用FileWriter和FileReader实现文件的剪切功能

public static void FileCut(){

//获取当前时间

long l1 = System.currentTimeMillis();

File f1 = new File("D:\\a\\a.txt");

//创建文件流对象

FileWriter fw1 = null;

FileReader fr1 = null;

if(!f1.exists()){

System.out.println("文件不存在!!!!");

}else{

//获取当前时间

try {

//读取文件

fr1 = new FileReader(f1);

fw1 = new FileWriter("D:\\b\\b.txt");

//定义个char数组用来存储每次读取的个数

char[] chars = new char[1204];

int num1 = 0;

while((num1 = fr1.read(chars)) != -1){

//写入D盘b目录先的a.txt

fw1.write(chars, 0, num1);

}

//将内容强制刷新到文件中

fw1.flush();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally {

if(fw1 != null){

try {

fw1.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(fr1 != null){

try {

fr1.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

//删除原文件

f1.delete();

//获取当前时间

long l2 = System.currentTimeMillis();

System.out.println("使用文件字符流剪切文件总共耗时:"+(l2-l1));

}

}

三、缓冲流

缓冲流是不直接与文件接触的,使用方式跟节点流和字符流类似。

1、输入缓冲流:

主要体现在创建对象的时候有些区别,输入流有一个readLine() 方法,用于读取一行文本数据,这个功能相对之前的就比较有优势,各方法如下:

字节缓冲流创建对象如下:

BufferedInputStream reader = null;

reader = new BufferedInputStream (new FileReader("D:\\a.txt"));

字符缓冲流创建对象如下:

BufferedReader reader = null;

reader = new BufferedReader(new FileReader("D:\\a.txt"));

 

2、输出缓冲流

各方法使用如下:

3、缓冲流和处理流

内部增加了一个8kb的缓冲区在复制和读取文件的时候相对比字符节点流和字符节点流的速度更快,有效的提高了效率。

时间: 2024-10-11 12:39:12

学习java第17天个人总结的相关文章

java核心技术 - 17个重要的知识点

1.Java中没有多继承,而是用接口来代替多继承 2.运行一个已经编译的程序时,Java解释器总是从指定类的main方法中的代码开始执行,因此,执行代码中必须有一个main函数. 3.Java是典型的强类型语言,即必须声明变量的类型,Java中有8种类型,6种数值类型(4个整数型和2个浮点型).一个字符类型和一个boolean类型. 想学习java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载. 4.强制类型转换: int nx = (int) x; //

学习Java需要达到的25个目标

本文将告诉你学习Java需要达到的25个目标,希望能够对你的学习及找工作有所帮助.对比一下自己,你已经掌握了这25条中的多少 条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式.你应该了解UML,尤其是 class,object,interaction以及statediagrams. 2.你需要学习Java语言的基础知识以及 它的核心类库 (collections,serialization,streams,networking,multi

学习JAVA应该去的20个英文网站(java学习网站)

学习JAVA应该去的20个英文网站(java学习网站)  1. http://www.javaalmanac.com     Java开发者年鉴一书的在线版本. 要想快速查到某种Java技巧的用法及示例代码, 这是一个不错的去处.  2. http://www.onjava.com     O'Reilly的Java网站. 每周都有新文章.  3. http://java.sun.com     官方的Java开发者网站 - 每周都有新文章发表.  4. http://www.developer

学习Java基础的一些收获一(this、static、super、final)

Java语言中This关键字应用浅析 应用一:引用成员变量 public class Student{ //定义一个类,类的名字为student. public Student(){ //定义 一个方法,名字与类相同故为构造方法 this(“luobo”) //这个this就是调用了下面的有参数的构造方法 } public Student(String name){ //定义一个带形式参数的构造方法 } } 如上面这个代码中,有一个成员变量name.同时在方法中有个形式参数,名字也是name.然

推介一个学习JAVA的系列教程-狗鱼IT教程

介绍一个学JAVA的零基础学习JAVA的网站,推介一个学习JAVA的系列教程-狗鱼IT教程 下面是java的系教程: 1?[java教程]Java 教程 2?[java教程]Java 简介 3?[java教程]Java 开发环境配置 4?[java教程]Java 基础语法 5?[java教程]Java 对象和类 6?[java教程]Java 基本数据类型 7?[java教程]Java 变量类型 8?[java教程]Java 修饰符 9?[java教程]Java 运算符 10?[java教程]Ja

深入学习 Java 序列化

深入学习 Java 序列化 来源  http://www.importnew.com/24490.html 原文 http://beautyboss.farbox.com/post/study/shen-ru-xue-xi-javaxu-lie-hua 前言 对于Java的序列化,一直只知道只需要实现Serializbale这个接口就可以了,具体内部实现一直不是很了解,正好这次在重复造RPC的轮子的时候涉及到序列化问题,就抽时间看了下 Java序列化的底层实现,这篇文章算是这次的学习小结吧. 第

Java基础17:Java IO流总结

Java基础17:Java IO流总结 IO流概述 在这一小节,我会试着给出Java IO(java.io)包下所有类的概述.更具体地说,我会根据类的用途对类进行分组.这个分组将会使你在未来的工作中,进行类的用途判定时,或者是为某个特定用途选择类时变得更加容易. 输入和输出 术语"输入"和"输出"有时候会有一点让人疑惑.一个应用程序的输入往往是另外一个应用程序的输出?那么OutputStream流到底是一个输出到目的地的流呢,还是一个产生输出的流?InputStre

零基础的人该怎么学习JAVA

对于JAVA有所兴趣但又是零基础的人,该如何学习JAVA呢?对于想要学习开发技术的学子来说找到一个合适自己的培训机构是非常难的事情,在选择的过程中总是 因为这样或那样的问题让你犹豫不决,阻碍你前进的步伐,今天就让小编为您推荐培训机构新起之秀--乐橙谷Java培训机构,助力你成就好未来. 选择java培训就到乐橙谷 北京有什么好的Java培训机构?来乐橙谷北京学Java,零基础走起,乐橙谷Java基础班授课老师经验非常丰富,课程内容安排合理,适合于有一点点Java基础甚至一点都不会Java的同学学

学习java之前

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 学习java之前 2.1认识JDK 工具包: 编译和运行其使用的是JDK里面的编译和运行,首先得下载JDK; 1.JDK的安装: JDK的官网:(http://www.oracle.com) 找到处按以下步骤: 2.安装JDK : 先双击一下jdk-8u144-windows-x64.exe然后进入安装: 然后在你写的路径下生成了文件 就是JDK的目录的位置