网站 简约,php商城网站的要求与数据,宿迁宿豫网站建设,wordpress 喜欢分享插件使用Reader体系#xff0c;读取一个文本文件中的数据。返回 -1 #xff0c;标志读到结尾。
import java.io.*;
class { public static void main(String[] args) throws IOException { /*
创建可以读取文本文件的流对象#xff0c;让创建好的流对象和指定的文件相关联。…使用Reader体系读取一个文本文件中的数据。返回 -1 标志读到结尾。
import java.io.*;
class {
public static void main(String[] args) throws IOException {
/*
创建可以读取文本文件的流对象让创建好的流对象和指定的文件相关联。
*/ fr new (demo.txt);
int ch 0;
while((ch fr.read())! -1) { //条件是没有读到结尾
System.out.println((char)ch); //调用读取流的read方法读取一个字符。
read()方法一次读一个字节的二进制数据—是int型的
}
fr.close();
}
}
读取数据的第二种方式第二种方式较为高效自定义缓冲区。
import java.io.*;
class {
public static void main(String[] args) throws IOException { fr new (demo.txt); //创建读取流对象和指定文件关联。
//因为要使用read(char[])方法将读取到字符存入数组。所以要创建一个字符数组一般数组的长度都是1024的整数倍。
char[] buf new char[1024];//读取的字符数组长度是1024
int len 0;
while(( lenfr.read(buf)) ! -1) {
System.out.println(new String(buf,0,len));//将char类型的数据从0到len转换成String
}
fr.close();
}
}
IO中的使用到了一个设计模式装饰设计模式。
装饰设计模式解决对一组类进行功能的增强。
包装写一个类(包装类)对被包装对象进行包装 * 1、包装类和被包装对象要实现同样的接口 * 2、包装类要持有一个被包装对象 * 3、包装类在实现接口时大部分方法是靠调用被包装对象来实现的对于需要修改的方法我们自己实现
字符流
Reader用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。 |---BufferedReader从字符输入流中读取文本缓冲各个字符从而实现字符、数组和行的高效读取。 可以指定缓冲区的大小或者可使用默认的大小。大多数情况下默认值就足够大了。 |---LineNumberReader跟踪行号的缓冲字符输入流。此类定义了方法 setLineNumber(int) 和 getLineNumber()它们可分别用于设置和获取当前行号。 |---InputStreamReader是字节流通向字符流的桥梁它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定或者可以接受平台默认的字符集。 |---用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值可以先在 上构造一个 InputStreamReader。 |---CharArrayReader |---StringReader
Writer写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。 |---BufferedWriter将文本写入字符输出流缓冲各个字符从而提供单个字符、数组和字符串的高效写入。 |---OutputStreamWriter是字符流通向字节流的桥梁可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定否则将接受平台默认的字符集。 |---用来写入字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。要自己指定这些值可以先在 上构造一个 OutputStreamWriter。 |---PrintWriter |---CharArrayWriter |---StringWriter
字节流
InputStream是表示字节输入流的所有类的超类。 |--- 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。 用于读取诸如图像数据之类的原始字节流。要读取字符流请考虑使用 。 |--- FilterInputStream包含其他一些输入流它将这些流用作其基本数据源它可以直接传输数据或提供一些额外的功能。 |--- BufferedInputStream该类实现缓冲的输入流。 |--- Stream |--- ObjectInputStream |--- PipedInputStream
OutputStream此抽象类是表示输出字节流的所有类的超类。 |--- 文件输出流是用于将数据写入 File 或 的输出流。 |--- FilterOutputStream此类是过滤输出流的所有类的超类。 |--- BufferedOutputStream该类实现缓冲的输出流。 |--- PrintStream |--- DataOutputStream |--- ObjectOutputStream |--- PipedOutputStream
缓冲区是提高效率用的给谁提高呢
BufferedWriter(将流和缓冲区结合)是给字符输出流提高效率用的那就意味着缓冲区对象建立时必须要先有流对象。明确要提高具体的流对象的效率。 fw new (bufdemo.txt);
BufferedWriter bufw new BufferedWriter(fw);//让缓冲区和指定流相关联。
for(int x0; x4; x){
bufw.write(xabc);
bufw.newLine(); //写入一个换行符这个换行符可以依据平台的不同写入不同的换行符。
bufw.flush();//对缓冲区进行刷新可以让数据到目的地中。
}
bufw.close();//关闭缓冲区其实就是在关闭具体的流。
-----------------------------
BufferedReader fr new (bufdemo.txt);
BufferedReader bufr new BufferedReader(fr);
String line null;
while((linebufr.readLine())!null){ //readLine方法返回的时候是不带换行符的。
System.out.println(line);
}
bufr.close();
-----------------------------
//记住只要一读取键盘录入就用这句话。
BufferedReader bufr new BufferedReader(new InputStreamReader(System.in));
//将读取到的从键盘输入的字节转化成字符存在流中并将其放入缓冲区
BufferedWriter bufw new BufferedWriter(new OutputStreamWriter(System.out));//输出到控制台
String line null;
while((linebufr.readLine())!null){
if(over.equals(line))
break;
bufw.write(line.toUpperCase());//将输入的字符转成大写字符输出
bufw.newLine();//换行
bufw.flush();
}
bufw.close();
bufr.close();