IO流的操作对象有四个抽象类 InputStream(字节输入流) OutputStream(字节输出流) Reader(字符输入流) Writer(字符输出流) 四个都是抽象类 如果要使用要使用该抽象类的实现方法 四个抽象类对应的抽象方法分别是 FileInputStream FileOutputStream FileReader FileWriter
下面演示各个方法以及常见用法
1.
InputStream的read()方法(空参数的方法)try( InputStream inputStream = new FileInputStream("D:\\javaCode\\IOStudy\\abdilei.txt") ; ){ //read()方法的返回值是读取字符的字节编码 如果没有读到就会返回-1 int b ; while( ( b = inputStream.read() ) != -1 ){ System.out.print((char)b); } }catch(Exception e ){ e.printStackTrace(); }
read()方法(有参数方法)
byte[] bytes = new byte[1024] ; int len ; while( (len = inputStream.read(bytes) )!= -1){ String s = new String(bytes, 0, len); System.out.println(s); } }catch(Exception e){ e.printStackTrace(); }
2.readAllBytes() 读取所有字符方法
byte[] bytes = inputStream.readAllBytes(); String s = new String(bytes) ; System.out.println(s) ;
3. 输出流的构造器有两种第一种是一个参数构造器 书写File的信息
第二种是两个参数构造器 第一个参数书写File信息第二个写是否在文件尾部追加 如果追加写true 否则写false
默认为false 如果是不追加那么每次创建输出流对象时会自动删除文件中原本的内容try(OutputStream outputStream = new FileOutputStream("D:\\\\javaCode\\\\IOStudy\\\\abdilei1.txt" ,true)){ outputStream.write(97);//a byte[] bytes = {97,98,99,100} ; outputStream.write(bytes);//a b c d outputStream.write(bytes, 1, 1); //b } catch (Exception e) { e.printStackTrace(); }
4.字符输入流的reader方法(无参数)
try(
Reader reader = new FileReader("D:\\\\\\\\javaCode\\\\\\\\IOStudy\\\\\\\\abdilei1.txt"))
{
int b ;
while (( b = reader.read() )!= -1 ){
System.out.print((char) b);
}
} catch (Exception e) {
e.printStackTrace();
}
reader方法(有参数)
try(
Reader reader = new FileReader("D:\\\\\\\\javaCode\\\\\\\\IOStudy\\\\\\\\abdilei1.txt"))
{
char[] chars = new char[1024] ;
int len ;
while((len = reader.read(chars)) != -1 ){
String s = new String(chars,0,len);
System.out.println(s);
}
} catch (Exception e) {
e.printStackTrace();
}
4.字符输出流 同理构造器也有两种(不再赘述)
try(
Writer writer = new FileWriter("D:\\javaCode\\IOStudy\\abdilei.txt") ;
)
{
writer.write(97); //a
writer.write("abc");
char[] chars = {'w','我','1'} ;
writer.write(chars);
writer.write(chars, 1, 1);
}catch (Exception e) {
e.printStackTrace();
}