目录字节输入流 字节输入流结构图FileInputStream类构造方法:常用读取方法:字节输出流 字节输出流结构图:FileOutputStream类构造方法:常用写入方法:总结字节输入流 java.io.InputStream抽象类是
java.io.InputStream抽象类是所有字节输入流的超类,将数据从文件中读取出来。
在Java中针对文件的读写操作有一些流,其中介绍最常见的字节输入流。
FileInputStream流被称为字节输入流,对文件以字节的形式读取操作,例如文字,图片等。
read() 方法,从文件的第一个字节开始读取,每执行一次就读取一个字节,如果文件为空,则读取返回-1,挨个字节读取对于中文字符会出现乱码。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class dome2{
public static void main(String[] args){
File file=new File("D:/.../...txt"); //创建file对象
FileInputStream fi=null;
try {
fi=new FileInputStream(file); //创建字节输入流
int read;
while((read=fi.read())!=-1) { //数据不为空的情况下循环读取
System.out.print((char)read); //将读取的数据打印
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fi!=null) {
try {
fi.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
read(byte[] b) ,从此输入流中读取b.length个字节的数据读入到byte数组中,针对中文字符读取产生乱码,需要编码,如果记事本存储的汉字是什么格式的就在读取的时候改成什么格式,例如我现在记事本的编码格式是ANSI,在读取的时候就是按照ANSI或者gbk编码格式读取。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class dome2{
public static void main(String[] args){
File file=new File("D:/../...txt"); //创建file对象
FileInputStream fi=null;
try {
fi=new FileInputStream(file); //创建字节输入流
int read;
byte[] bytes=new byte[1024]; //创建一个数组,讲读取的字节存入数组
while((read=fi.read(bytes))!=-1) { //数据不为空的情况下循环读取
System.out.print(new String(bytes,0,read,"gbk")); //将读取的数据按字符串打印
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fi!=null) {
try {
fi.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
方法名 | 说明 |
---|---|
void close() | 关闭此文件输入流并释放关于此流有关的所有系统资源 |
int read(byte[] b, int off, int len) | 从此输入流中将len个字节的数据读入到byte数组中 |
int available() | 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。 |
long skip(long n) | 从输入流中跳过并丢弃 n 个字节的数据。 |
java.io.OutputStream抽象类是所有字节输出流的超类,该类用于对文件写入数据。
FileOutputStream类是向文件中以字节的形式写入数据,例如图像和图片等。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class dome2{
public static void main(String[] args){
File file=new File("D:/hello.txt"); //创建file对象
FileOutputStream fo=null;
try {
fo=new FileOutputStream(file);
String str="你好,java!";
byte[] bytes=str.getBytes();
fo.write(bytes);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fo!=null) {
try {
fo.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
到此这篇关于Java中字节输入与输出流的文章就介绍到这了,更多相关Java字节输入与输出流内容请搜索编程界以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程界!
--结束END--
本文标题: 图文详解Java中的字节输入与输出流
本文链接: https://www.lsjlt.com/news/88.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2023-09-30
2023-09-30
2023-09-30
2023-09-30
2023-09-30
2023-09-30
2023-09-30
2023-09-29
2023-09-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0