一、FileWriter

小节:

1)FileWriter fw = new FileWriter("a.txt",true);//表示追加写入,默认是false。正常情况:执行多次程序输出会被覆盖。写追加true后会在之前基础上写入。
2)\n可以实现换行,但是windows系统自带的记事本打开并没有换行,这是为什么呢?因为windows识别的换行不是\n,而是\r\n
* windows:\r\n
* linux:\n
* mac:\r
3)
//        String(char[] value):把字符数组的数据封装成字符串对象
// String s = new String(arr);
// System.out.println(s);
System.out.println(new String(arr)); //通过构造方法将字符数组转换为字符串。
4)

1.一次写一个写字符串

package day10_io_fileWrite_Read.write;
/* FileWriter:
* FileWriter(String fileName):传递一个文件名称
*
* 输出流写数据的步骤:
* A:创建输出流对象
* B:调用输出流对象的写数据的方法
* C:释放资源
*/
import java.io.FileWriter;
import java.io.IOException;
/*
flush():刷新缓冲区。流对象还可以继续使用。
close():先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
*/ public class FileWriterDemo01 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("d:\\java\\demo\\demo001\\src\\day10_io_fileWrite_Read\\a.txt");
fw.write();//二进制转换为字符
fw.write("\r\n你好"); //数据没有直接写到文件,其实是写到了内存缓冲区
fw.flush(); //释放资源
//通知系统释放和该文件相关的资源
fw.close();
}
}

输出如下:

2.一次写一个字符数组

package day10_io_fileWrite_Read.write;

import java.io.FileWriter;
import java.io.IOException;
/*
* void write(String str):写一个字符串数据
* void write(String str,int index,int len):写一个字符串中的一部分数据
* void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。'a',97
              由小到大转换(byte、short、char-->int-->long-->float-->double)
* void write(char[] chs):写一个字符数组数据
* void write(char[] chs,int index,int len):写一个字符数组的一部分数据
*
* *如何实现数据的换行?
* \n可以实现换行,但是windows系统自带的记事本打开并没有换行,这是为什么呢?因为windows识别的换行不是\n,而是\r\n
* windows:\r\n
* linux:\n
* mac:\r
* 如何实现数据的追加写入?
* FileWriter(String fileName, boolean append)
*/
public class Fw_array02 {
public static void main(String[] args) throws IOException {
// FileWriter fw = new FileWriter("a.txt"); //相对路径a.txt存在于程序项目的同级目录下。
FileWriter fw = new FileWriter("a.txt",true);//表示追加写入,默认是false。正常情况:执行多次程序输出会被覆盖。写追加true后会在之前基础上写入。 /*
fw.write("hello\r\n");
//从index1开始写到3结束
fw.write("hello",1,3);
//换行
fw.write("\r\n");
*/ //写字符数组数据
char[] arr = {'a','b','c','d'};
fw.write(arr); fw.write(arr,,); fw.close();
}
}

输出如下:

二、FileReader

1.一次读取一个字符串

package day10_io_fileWrite_Read.read;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException; public class FileReaderDemo03 {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("b.txt");
/*
//第一次读
int ch = fr.read();
System.out.println(ch);//打印的是字符值
System.out.println((char)ch); //第二次读
ch = fr.read();
System.out.println(ch);
System.out.println((char)ch);//通过测试,我们知道,如果读取数据的返回值是-1的时候,就说明没有数据了,这也是我们循环的结束条件
*/ //用循环来读取数据
int ch1;
while((ch1=fr.read())!=-) {
System.out.print((char)ch1); //注意print是不换行,println是换行
}
fr.close(); }
}

输出如下:

2.一次读取一个数组

package day10_io_fileWrite_Read.read;

import java.io.FileReader;
import java.io.IOException; /*
* 读取数组数据方法
* */
public class Fr_array04 {
public static void main(String[] args) throws IOException { FileReader fr = new FileReader("c.txt"); //动态初始化:数据类型[] 数组名 = new 数据类型[数组长度];
char[] arr = new char[]; //一次读取一个字符数组的数据,返回的是实际读取的字符个数 /*
//读取一次
int len = fr.read(arr); System.out.println("len:"+len);
// String(char[] value):把字符数组的数据封装成字符串对象
// String s = new String(arr);
// System.out.println(s);
System.out.println(new String(arr)); //通过构造方法将字符数组转换为字符串。
System.out.println(new String(arr,1,3)); fr.close();
*/ //循环读取
FileReader fr1 = new FileReader("c.txt");
char[] arr1 = new char[];
int len1;
while((len1=fr1.read(arr1))!=-) {
//System.out.print(new String(arr1)); //每次读5个字符,如果最后一个字符不足五个,(后面的数组覆盖之前数组)如:最后数组分3个字符,会显示3个字符+之前数组的最后两字符
        System.out.print(new String(arr1,0,len1)) //使用0-len1长度截掉最后多出的2个字符
} fr1.close(); } }

输出如下:

文本:

System.out.print(new String(arr1))输出:

System.out.print(new String(arr1,0,len1)) 输出:

三、copy 用io流实现cp文件

1.一次读写一个字符

package day10_io_fileWrite_Read.copy;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; //一次读写一个字符
//先读再写
public class CopyDemo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("c.txt");
FileWriter fw = new FileWriter("copy.txt"); // //读写一次
// System.out.println(fr.read());
// fw.write(97); // fw.write(fr.read()); //循环读写
int len;
while((len=fr.read())!=-) {
fw.write(len);
} fw.flush();
fw.close();
fr.close();
}
}

2.一次读写一个数组

package day10_io_fileWrite_Read.copy;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class CopyArrayDemo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("c.txt");
FileWriter fw = new FileWriter("copy1.txt"); char[] arr = new char[];
int len;
while((len=fr.read(arr))!=-) {
fw.write(arr,0,len);
       fw.flush;
} fw.close();
fr.close();
}
}

10.3 io流 正篇 FileReader FileWriter读写代码的更多相关文章

  1. Java API —— 编码 & IO流( InputStreamReader & OutputStreamWriter & FileReader & FileWriter & BufferedReader & BufferedWriter )

    1.编码     1)编码表概述         由字符及其对应的数值组成的一张表     2)常见编码表         · ASCII/Unicode 字符集:ASCII是美国标准信息交换码,用一 ...

  2. Java中的IO流 - 入门篇

    前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的IO流-入门篇>,希望对大家有帮助,谢谢 由于Java的IO类有很多,这就导致我刚开始学的时候,感觉很乱,每次用到都是上网搜,结果 ...

  3. java FileReader/FileWriter读写文件

    java FileReader/FileWriter读写字母和数字没问题,但读写汉字就乱码.记录下,后面找到解决方法再补上. public static void main(String[] args ...

  4. Java IO 流总结篇

    1. 写在前面的话 I/O ,I 是 Input (输入)的缩写,O是Output (输出) 的缩写,众所周知,人与人之间想要沟通交流,就需要讲彼此都能听懂的语言,比如大家都统一说英语. 人类如果想和 ...

  5. Jakartase_IO流_ — Commons IO_(IO流终极篇)

    一.前言 Apache Commons IO是Apache基金会创建并维护的Java函数库. 它提供了许多类使得开发者的常见任务变得简单,同时减少重复代码 二.Commons IO 类库 2.1 Fi ...

  6. Java之IO流进阶篇:内存流,打印流,对象流

    Java中的IO流,即为输入输出流.所谓输入输出流,都是相对于程序而言,程序就是这个参照物.一张图看懂输入输出流: 输入流抽象基类:InputStream,Reader 输出流抽象基类:OutputS ...

  7. 节点流(文件流) FileInputStream & FileOutputStream & FileReader & FileWriter

    节点流(文件流) FileInputStream(字节流)处理视频类的                   FileOutputStream(字节流) FileReader(字符流)处理文本文件    ...

  8. 10.2 io流 之字节流和字符流

    FileWriter 用于写入字符流.要写入原始字节流,请考虑使用 FileOutputStream. io流相关文档: https://www.cnblogs.com/albertrui/p/836 ...

  9. 10.1 io流--ASCII码表

    day2.8中提到 /* * +: * 做加法运算 * * 字符参与加法运算,其实是拿字符在计算机中存储的数据值来参与运算的 * 'A' 65(B 66...) * 'a' 97(b 98...) * ...

随机推荐

  1. hihoCoder #1175 : 拓扑排序&#183;二

    [题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小Hi和小Ho所在学校的校园网被黑客入侵并投放了病毒.这事在校内BBS上立马引 ...

  2. 【翻译自mos文章】将expdp的dmp文件从asm磁盘组里边放到本地文件系统里边

    将expdp的dmp文件从asm磁盘组里边放到本地文件系统里边 參考原文: How To Extract Datapump File From ASM Diskgroup To Local Files ...

  3. [Sqlite]--&gt;数据迁移备份--从低版本号3.6.2到高版本号3.8.6

    引子: 1. Sqlite在Windows.Linux 和 Mac OS X 上的安装过程 2.嵌入式数据库的安装.建库.建表.更新表结构以及数据导入导出等等具体过程记录 个字段IPHONE和LOGI ...

  4. 【转】Android 关闭多个视图Intent.FLAG_ACTIVITY_CLEAR_TOP用法

    如果已经启动了四个Activity:A,B,C和D.在D Activity里,我们要跳到B Activity,同时希望C finish掉, 可以在startActivity(intent)里的inte ...

  5. ALSA声卡驱动中的DAPM详解之三:如何定义各种widget

    上一节中,介绍了DAPM框架中几个重要的数据结构:snd_soc_dapm_widget,snd_soc_dapm_path,snd_soc_dapm_route.其中snd_soc_dapm_pat ...

  6. NOI.AC #31. MST

    好像又是神仙dp....gan了一早上 首先这是个计数类问题,上DP, 对于一个最小生成树,按照kruskal是一个个联通块,枚举边小到大合成的 假如当前边是树边,那么转移应该还是枚举两个块然后合并 ...

  7. bzoj 1022 小约翰的游戏John

    题目大意: n堆石子,两个人轮流取石子,每个人取的时候,可以随意选择一堆石子 在这堆石子中取走任意多的石子,但不能一粒石子也不取,取到最后一粒石子的人算输 思路: 首先当每堆石子数都为1时,偶数为先手 ...

  8. POJ3090 巧用欧拉函数 phi(x)

    POJ3090 给定一个坐标系范围 求不同的整数方向个数 分析: 除了三个特殊方向(y轴方向 x轴方向 (1,1)方向)其他方向的最小向量表示(x,y)必然互质 所以对欧拉函数前N项求和 乘2(关于( ...

  9. vs打开wixproj后缀文件

    1.在正常情况下vs是无法打开wixproj工程的,能打开也只能是以记事本方式打开该文件本身 2.所以此时需要下载wixtool,安装后即可打开上述类型文件 3.最好也安装好vs对应版本的扩展包 4. ...

  10. PCB WebAPI 接口测试工具与接口文档生成

    我们自己写WebAPI或调用对方系统提供的WebAPI时,测试WebAPI接口工具用哪些工具呢. 这里将3种WebAPI常用到的工具使用说明.主要是讲对第3种WebApiTestClientWebAp ...