java 整数最大值 io流,Java SE入门(十)——IO流

Java SE入门(十)——IO流   iwehdio的博客园:https://www.cnblogs.com/iwehdio/

1、IO流

用来处理设备之间的数据传输,包括存储数据到文件和从文件读取内容。

分类:输入流(读取数据);输出流(存储数据)。

2、FileWriter类

将数据写入文件,输出流。

构造方法:FileWriter(String filename);

写入文件的方法:

创建输出流对象。

调用输出流对象写数据的方法。

释放资源。

创建输出流对象:

FileWriter fw = new FileWriter("路径");

main后抛除IO异常:throws IOException

创建输出流对象做了什么:

调用系统资源创建了一个文件。

创建输出流对象。

把输出流对象指向文件。

写一个字符串数据:

将数据写入内存缓冲区:fw.writer("字符串内容");

刷新缓冲区内的数据写入文件:fw.flush();

(先刷新缓冲区,再)释放资源:fw.close();

路径:

绝对路径,带有盘符,如"d\\a.txt"

相对路径,相对当前项目而言的,不带有盘符,在项目的根目录下。如"a.txt"

写数据的方法:

写一个字符串数据:void writer(String str);

写字符串中 index 开始 len 长度的数据:void writer(String str,int index,int len);

写一个字符数据,既可以写char类型也可以写char对应的int数据:void write(int ch);

写一个字符数组:void wite(char[] chs);

写字符数组中 index 开始 len 长度的数据:void write(char[] chs,int index,int len);

数据换行:fw.writer("换行符");,

WIndows系统换行是:\r\n。

Linux是:\n。

Mac是:\r。

追加写入:FileWriter fw = new FileWriter(String Filename,boolean append),追加写入则应有append=true。

创建 FileWriter对象读入文本后直接 close(),文本中存储的内容会被清除。

3、FileReader 类

从文件中读数据,输入流。

构造方法:

FileReader fr = new FileReader("路径");

输入流读文件:

创建输入流对象。

调用输入流对象的读数据方法。

释放资源。

读数据的方法:

一次读入一个字符:int read();

int ch = fr.read();

这得到的是字符串的ASCII码。

得到字符需要(char)ch。

当返回的值为 -1 时,代表没有数据了,读数据循环的终止条件。

不需要 println 换行,因为已经从文件中读取了换行符。 int ch;

while((ch=fr.read())!=-1){

System.out.print((char)ch);

}

fr.close();

一次读入一个字符串:int read(char[] cbuf);

char[] chs = new char[size];,(size一般取1024)。

int len = fr.read(chs);,返回的是实际读取的字符个数。

得到每次读取到的数据:new String(chs,0,len);,chs 中 len 之后的内容为上次读取的未被覆盖的内容。

len 为 -1 时代表没有数据了。

不需要 println 换行,因为已经从文件中读取了换行符,并且 \r\n 也有字符个数为2。 char[] chs = new char[1024];

int len;

while((len = fr.read(chs))!=-1){

System.out.print(new String(chs,0,len));

}

fr.close();

一次读写一个字符复制文本文件: public static void main(String[] args) throws IOException {

FileWriter fw = new FileWriter("Copydemo.java");

FileReader fr = new FileReader("Demo.java");

int ch;

while((ch=fr.read())!=-1){

fw.write(ch);

System.out.print((char)ch);

}

fw.close();

fr.close();

}

一次读写一个字符数组复制文本文件: public static void main(String[] args) throws IOException {

FileWriter fw = new FileWriter("Copydemo.java");

FileReader fr = new FileReader("Demo.java");

char[] chs = new char[1024];

int len;

while((len=fr.read(chs))!=-1){

fw.write(chs,0,len);

}

fw.close();

fr.close();

}

4、字符缓冲流

BufferedWriter 类 / BufferedReader 类

写入 / 读取文本,缓冲各个字符,实现字符和字符数组的高效写入 / 读取。

BufferedWriter 类:

构造方法:

BufferedWriter bw = new BufferedWriter(new FileWriter("路径"));

同样也需要bw.flush();和bw.close();。

BufferedReader类:

构造方法:

BufferedReader br = new BufferedReader(new FileReader("路径"));

也具有一次读一个字符串或一个字符数组两种方式,方法与 FileReader 使用方法相同。

同样也需要br.flush();和br.close();。

缓冲流的特殊功能:

BufferedWriter中:

void newLine();。

bw.newLine();写一个换行符,跟随系统决定。

BufferedReader中:

String readLine();。

line = br.readLine();一次读取一行数据,不读取换行符。

没有数据时,返回值为 null 。 String line;

while((line=br.readLine())!=null){

System.out.println(line);

}

br.close();

特殊功能复制文件: BufferedWriter bw = new BufferedWriter(new FileWriter("bufferedcopy.java"));

BufferedReader br = new BufferedReader(new FileReader("Demo.java"));

String line;

while((line=br.readLine())!=null){

bw.write(line);

bw.newLine();

bw.flush();

}

bw.close();

br.close();

5、集合与文本文件

集合数据写入文本文件步骤:

创建集合对象。

往集合中添加字符串元素。

创建输出缓冲流对象。

遍历集合,得到每一个字符串元素,把该字符串元素作为数据写到文本文件。

释放资源。 ArrayList array = new ArrayList();

array.add("hello");

array.add("java");

BufferedWriter bw = new BufferedWriter(new FileWriter("array.txt"));

for(int x=0;x

String s = array.get(x);

bw.write(s);

bw.newLine();

bw.flush();

}

bw.close();

文本文件中的数据读取到集合步骤:

创建输入缓冲流对象。

创建集合对象。

读取数据,每次读取一行数据,把该行数据作为一个元素存储到集合中。

释放资源。 BufferedReader br = new BufferedReader(new FileReader("array.txt"));

ArrayList array = new ArrayList();

String line;

while((line=br.readLine())!=null){

array.add(line);

}

br.close();

iwehdio的博客园:https://www.cnblogs.com/iwehdio/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值