实例1

package IO;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer; /**
* 案例:利用字符流实现字符文件的拷贝1.txt -> 3.txt
* 1.字符文件的读取:FileReader
* 2.字符文件的写入:FileWriter
* 3.循环上面的过程
*/
public class FileCopyDemo1 {
public static void main(String[] args) throws Exception{ /**
* 1.创建字符文件输入流指向1.txt
* 2.创建文件输出流指向文件3.txt
*/
Reader reader = new FileReader("1.txt");
Writer writer = new FileWriter("3.txt");
/**
* 3.对接流,并循环输出
* 4.判断循环条件:当输入流没有数据输入时结束循环
*/
int i;
while((i = reader.read()) != -1) {
writer.write(i);
}
// 5.关闭流
reader.close();
writer.close(); }
}

实例2

package IO;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer; /**
* 案例:利用字符流实现字符文件的拷贝1.txt -> 3.txt
* 1.字符文件的读取:FileReader
* 2.字符文件的写入:FileWriter
* 3.循环上面的过程
* 4.添加上异常处理
*/
public class FileCopyDemo2 {
public static void main(String[] args) { /**
* 1.创建字符文件输入流指向1.txt
* 2.创建文件输出流指向文件3.txt
*/
Reader reader = null;
Writer writer = null; try {
reader = new FileReader("1.txt");
writer = new FileWriter("3.txt");
/**
* 3.对接流,并循环输出
* 4.判断循环条件:当输入流没有数据输入时结束循环
*/
int i;
while((i = reader.read()) != -1) {
writer.write(i);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
/**
* 5.关闭流
* (1).关闭流的时候也可能回出异常,所以也要进行异常处理。
* (2).如果出现异常,就要强制关流,把流置为空就可以。
*/ /**
* IO流用过之后必须关闭,但是IO流的代码中往往存在大量的异常,为了保证关流的操作一定会被执行,所以通过关流都在finally代码块中进行。
而为了保证finally中可以看到流对象,通常都要外置定义流对象。
又由于close方法本身有异常,需要再次捕获异常。
而在finally里通过将引用置为null 使其成为垃圾 可以被回收。 */
try {
reader.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
reader = null;
} try {
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
writer = null;
} } }
}

实例3

package IO;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer; /**
* 案例:利用字符流实现字符文件的拷贝1.txt -> 3.txt
* 1.字符文件的读取:FileReader
* 2.字符文件的写入:FileWriter
* 3.循环上面的过程
* 4.添加上异常处理
* 5.利用字符数组加快传输效率
*/
public class FileCopyDemo3 {
public static void main(String[] args) { /**
* 1.创建字符文件输入流指向1.txt
* 2.创建文件输出流指向文件3.txt
*/
Reader reader = null;
Writer writer = null; try {
reader = new FileReader("1.txt");
writer = new FileWriter("3.txt");
/**
* 3.对接流,并循环输出
* 4.判断循环条件:当输入流没有数据输入时结束循环
* (1).创建一个指定容量的字符数组来存储数据
* (2).读取数据的时候一次性读取1024个字符 ,将读入的字符放入ch字符数组里面
* (3).写的时候将ch字符数组里面的数据从0位置开始一直写到第 i 个位置
* (4).read()方法返回的是一个int值,其实就是返回ch字符数组里面存储内容的大小
*/
int i = 0;
char[] ch = new char[1024]; while((i = reader.read(ch)) != -1) {
writer.write(ch, 0, i);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
/**
* 5.关闭流
* (1).关闭流的时候也可能回出异常,所以也要进行异常处理。
* (2).如果出现异常,就要强制关流,把流置为空就可以。
*/
try {
reader.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
reader = null;
} try {
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
writer = null;
} } }
}

实例4

package IO;

import java.io.FileReader;
import java.io.Reader; /**
* 案例:编写一个流,来读取外部文件中的字符数据
* 1.根据数据流动的方向:输入流
* 2.根据操作数据的类型:字符流
* 3.字符输入流:Reader
* 4.操作的是文件:FileReader
*/
public class FileReaderDemo {
public static void main(String[] args) throws Exception{
/**
* 选用类的时候我们先找到Reader类,发现是一个抽象类,所以去找它的子类
* 找到了InputStreamReader类,它是字节流通向字符流的桥梁
* 在它里面我们可以找到FileReader子类,他是用来读取字符文件的便捷类
*
* 构造方法:
* FileReader(File file) 在给定从中读取数据的 File 的情况下创建一个新 FileReader。
* FileReader(String fileName) 在给定从中读取数据的文件名的情况下创建一个新 FileReader。
* 读取数据的方法:
* int read() 读取单个字符。
* int read(char[] cbuf) 将字符读入数组中的某一部分。
* 关闭流:
* close()
*/ // 1.创建一个文件字符输入流链接到指定文件
Reader reader = new FileReader("1.txt");
/**
* 2.通过流读取文件中的数据
* read()方法读取reader流里面的内容,一个字符一个字符的读取
* 将读取的字符都放在i里面,当没有字符得时候就读入-1结束
*/
int i = 0;
while((i = reader.read()) != -1) {
System.out.print((char)i);
}
// 3.关闭流
reader.close(); }
}

实例5

package IO;

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer; /**
* 案例:编写一个流,来将指定的字符写到外部文件中
* 根据数据流动的方向:输出流
* 根据操作数据的类型:字符流
* 字符输出流:Writer
* 操作的是文件:FileWriter
*/
public class FileWriterDemo {
public static void main(String[] args) throws Exception {
/**
* 构造方法:
* FileWriter(File file) 根据给定的 File 对象构造一个 FileWriter 对象
* FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象
* 输出数据的方法:
* write(int c) 写入单个字符。
* write(char[] cbuf) 写入字符数组的某一部分。
* 刷新流:
* flush() 刷新该流的缓冲。
* 关闭流:
* close() 关闭此流,但要先刷新它。
*/ // 1.创建文件字符输出流
Writer writer = new FileWriter("2.txt");
// 2.通过字符输出流输出数据
writer.write(97);
// 3.冲刷流
writer.flush();
// 4.关闭流
writer.close();
}
}

实例6

package IO;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter; /**
* 1.案例:使用缓冲流BufferedReader BufferedWriter复制文本文件
* 2.java提供了自带缓冲区的流 BufferedReader bufferedWriter,内部自带缓冲区
* 3.功能:
* 装饰其他流 提升读写性能
* 装饰起来流 提供额外方法
* 4.BufferedReader BufferedWriter会将文件中的内容先读取到缓冲区里面,
* 然后read()方法读取数据的时候不再从文件里面直接读取,而是在缓冲区里面读取数
* 据,这样可以极大地提高文件的读取效率。
*/
public class BufferedReader_BufferedWriterDemo1 {
public static void main(String[] args) throws Exception { /** 步骤一:创建文件输入流和文件输出流,并用缓冲字符流将其包装起来
*
* 1.BufferedReader(Reader in)
* 创建一个使用默认大小输入缓冲区的缓冲字符输入流。
* 2.BufferedReader(Reader in, int sz)
* 创建一个使用指定大小输入缓冲区的缓冲字符输入流。
* 3.缓冲字符流可以自己指定缓存区大小,但是不建议自己指定,系统给定的缓冲区已经很合理
*/
FileReader reader = new FileReader("1.txt");
FileWriter writer = new FileWriter("3.txt"); BufferedReader breader = new BufferedReader(reader);
BufferedWriter bwriter = new BufferedWriter(writer); /** 步骤二:连接流,进行文件复制
*
* 1.read(char[] cbuf, int off, int len)
* 将字符读入数组的某一部分。
* 2.close()
* 关闭该流并释放与之关联的所有资源。
*/
int i = 0;
char[] buf = new char[1024]; while((i = breader.read(buf)) != -1) {
bwriter.write(buf, 0, i);
}
// 关闭流
breader.close();
bwriter.close();
}
}

实例7

package IO;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter; /**
* 1.案例:使用缓冲流BufferedReader BufferedWriter复制文本文件
* 2.使用readline()和newLine()方法进行文本文件的复制
* 3.原理:BufferedReader先把文本内容读取到其内部的缓冲区里面,
* 当readline()方法从缓冲区里面拿数据的时候通过识别 \r\n直接
* 一行一行的拿,然后输出。
* 4.原理:BufferedWriter中的newLine()方法可以将缓冲区里
* 面的内容一行一行的拿取,然后输出。
*/
public class BufferedReader_BufferedWriterDemo2 {
public static void main(String[] args) throws Exception {
/** 步骤一:创建文件输入流和文件输出流,并用缓冲字符流将其包装起来
*
*/ BufferedReader breader = new BufferedReader(new FileReader("1.txt"));
BufferedWriter bwriter = new BufferedWriter(new FileWriter("3.txt")); /** 步骤二:对接流,进行文件复制
*
* 1.BufferedReader readLine()
* 读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
* 2.BufferedWriter newLine()
* 写入一个行分隔符。行分隔符字符串由系统属性 line.separator 定义,并且不一定是单个新行 ('\n') 符。
* 3.两个方法同时用可以极大的提升程序运行的效率。
*/
String line = null; while((line = breader.readLine()) != null) {
bwriter.write(line);
bwriter.newLine();
}
// 关闭流
breader.close();
bwriter.close();
}
}

Java 运用流传输文件的更多相关文章

  1. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  2. java io流 对文件夹的操作

    java io流 对文件夹的操作 检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文 ...

  3. java io流 创建文件、写入数据、设置输出位置

    java io流 创建文件 写入数据 改变system.out.print的输出位置 //创建文件 //写入数据 //改变system.out.print的输出位置 import java.io.*; ...

  4. Java 字符流实现文件读写操作(FileReader-FileWriter)

    Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...

  5. java socket通信-传输文件图片--传输图片

    ClientTcpSend.java   client发送类 package com.yjf.test; import java.io.DataOutputStream; import java.io ...

  6. Java使用Socket传输文件遇到的问题(转)

    1.写了一个socket传输文件的程序,发现传输过去文件有问题.找了一下午终于似乎找到了原因,记录下来警示一下: 接受文件的一端,向本地写文件之前使用Thread.sleep(time)休息一下就解决 ...

  7. Java使用Socket传输文件遇到的问题

    1.写了一个socket传输文件的程序,发现传输过去文件有问题.找了一下午终于似乎找到了原因,记录下来警示一下: 接受文件的一端,向本地写文件之前使用Thread.sleep(time)休息一下就解决 ...

  8. java IO流 对文件操作的代码集合

    Io流 按照分类 有两种分类 流向方向: 有输入流和输出流 按照操作类型有:字节流和字符流 按照流向方向 字节流的一些操作 //读文件 FileInputStream fis = new FileIn ...

  9. Java学习---流与文件

    实验10  流与文件操作 一.实验目的 理解和掌握JAVA程序中实现输入/输出的技术和有关的类与方法. 二.实验要求 掌握File类常用的方法 掌握标准数据流及Scanner类的应用. 掌握文件输入输 ...

随机推荐

  1. Asynchronous Programming Using Delegates使用委托进行异步编程

    http://msdn.microsoft.com/zh-cn/library/22t547yb(v=vs.110).aspx https://github.com/chucklu/Test/tree ...

  2. The Road to Ryu: Hi Ryu

    参考: ryu入门教程 ryu ryu/ryu Structure -ryu/ryu app base cmd contrib controller lib ofproto services test ...

  3. 解决本地项目推送到码云(github),上提示:failed to push some refs to ...

    本地项目上传github 命令如下: 1.git init 2.git add . 3.git commit  -m "init" 4.git remote add origin ...

  4. 【测试设计】基于正交法的测试用例设计工具--PICT

    前言 我们都知道成对组合覆盖是一种非常有效的测试用例设计方法,但是实际工作过程中当成对组合量太大,我们往往很难做到有效的用例覆盖. PICT是微软公司出品的一款成对组合命令行生成工具,它很好的解决了上 ...

  5. (GoRails)ActionCable如何用Redis + 菜鸟redis教程

    视频: https://gorails.com/episodes/how-actioncable-uses-redis?autoplay=1 原理PubSub, 你进入一个频道,然后就能接收,和发布信 ...

  6. linux 常用操作以及概念

    一.常用操作以及概念 查看LINUX发行版的名称及其版本号的命令: lsb_release -a cat /etc/redhat-release(针对redhat,Fedora) 0.rpm包路径:/ ...

  7. MHA-ATLAS-MySQL高可用2

    六,配置VIP漂移 主机名 IP地址(NAT) 漂移VIP 描述 mysql-db01 eth0:192.168.0.51 VIP:192.168.0.60 系统:CentOS6.5(6.x都可以) ...

  8. prototype原型模式

    /** * 原型模式 Prototype * 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象 */ 需求: public class Resume { /** * 要求:一个简历类,必须 ...

  9. cell 重用

    1. 当单元格因滚屏而脱落表格可见区时,表格可以将其缓存到重用队列中. 用法:我们可标记单元格以备重用,然后根据需要从该队列中提取. 在分配新单元格时,必须检查重用单元格是否可用.如果表格对deque ...

  10. MVC项目使用Oracle数据库运行提示:找不到请求的 .Net Framework Data Provider。可能没有安装

    MVC项目使用Entity Framework针对Oracle数据库进行开发时,由于Oracle官方网站一般建议开发者在64位操作系统中使用32位ODP.Net进行开发.在进行程序编码的时候不会有问题 ...