JAVA-io流
来源:互联网 发布:搞笑一家人知乎 编辑:程序博客网 时间:2024/06/05 17:49
首先io流分为两个
I 代表的是Input(输入)
O 代表的是Output(输出)
分类1:
1.输入流:
输入指的是从磁盘(文件)中读取信息,以读取到内存 中
2.输出流:
指的是从内存中向磁盘中写入文件
如:做文件上传下载的时候皆是输出流
指的是从内存中向磁盘中写入文件
如:做文件上传下载的时候皆是输出流
分类2
还有两种分类:
1.字节流:以字节为单位读取
a)如:a (一个字节)
b)国(两个字节)
2.字符流:以字符为单位读取
a)如:a(一个字符)
b)国(一个字符)
还有两种分类:
1.字节流:以字节为单位读取
a)如:a (一个字节)
b)国(两个字节)
2.字符流:以字符为单位读取
a)如:a(一个字符)
b)国(一个字符)
流的分类:
1.输入流
1.字节输入流(InputStream)
2.字符输入流(Reader)
2.输出流
1.字节输出流(OutputStream)
2.字符输出流(writer)
1.输入流
1.字节输入流(InputStream)
2.字符输入流(Reader)
2.输出流
1.字节输出流(OutputStream)
2.字符输出流(writer)
流的作用(也是他最主要的作用):
上传下载(qq头像,百度网盘,360云盘,,,,,)
上传下载(qq头像,百度网盘,360云盘,,,,,)
要用流去读取文件需要具备什么?
流,文件(随意建)
流,文件(随意建)
文件也叫源文件或数据源
字节输入流
//首先是创建流对象
InputStream in = new FileInpitStream("路径")
//有参构造,需要传参,参数为源文件的路径
//注意:路径不可以直接使用\,可以使用\\或/
//这时会报错,是报catch的错,需要try,捕获一下
//下一步就是需要读
System.put.println(in.read());
//这时还会报错,没毛病,继续捕获
//你在创建对象下面输出时一般使用的是循环输出
//你想,如果用一般的System.out.print((char)in.read());输出
//这个输出的只能是一个字符,那你要是输出一篇文章那?
//你估计得累死
in.read() //返回的int类型的ASCII码值,当文件读取结束时,返回是-1
int 名1 = in.read ( );
while (名1 != -1){
System.out.print((char)in.read());
}
//这段代码的意思是:每当读取一个字符后,就给名1 重新赋值并输出
//再写
名1 = in.read();
/*这样就实现的循环,直到输出完所有字符。。。
把这些做完了就要注意另一个问题。
关流!!!
好比什么,就像是有一个大箱子里面大大小小共3个,
你需要先开大的再开小的,
但是你用完了,是先关小的最后关大的。。
但是!!!
要注意了,int在catch里面的,在catch里面是没办法关的,所以,要把InputStram放在try上面*/
InputStram in = null;
/*给他空值
随后就可以接着关了*/
finally{
if(名1 != null){
//关闭流,释放资源
try{
in.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
//首先是创建流对象
InputStream in = new FileInpitStream("路径")
//有参构造,需要传参,参数为源文件的路径
//注意:路径不可以直接使用\,可以使用\\或/
//这时会报错,是报catch的错,需要try,捕获一下
//下一步就是需要读
System.put.println(in.read());
//这时还会报错,没毛病,继续捕获
//你在创建对象下面输出时一般使用的是循环输出
//你想,如果用一般的System.out.print((char)in.read());输出
//这个输出的只能是一个字符,那你要是输出一篇文章那?
//你估计得累死
in.read() //返回的int类型的ASCII码值,当文件读取结束时,返回是-1
int 名1 = in.read ( );
while (名1 != -1){
System.out.print((char)in.read());
}
//这段代码的意思是:每当读取一个字符后,就给名1 重新赋值并输出
//再写
名1 = in.read();
/*这样就实现的循环,直到输出完所有字符。。。
把这些做完了就要注意另一个问题。
关流!!!
好比什么,就像是有一个大箱子里面大大小小共3个,
你需要先开大的再开小的,
但是你用完了,是先关小的最后关大的。。
但是!!!
要注意了,int在catch里面的,在catch里面是没办法关的,所以,要把InputStram放在try上面*/
InputStram in = null;
/*给他空值
随后就可以接着关了*/
finally{
if(名1 != null){
//关闭流,释放资源
try{
in.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
在写这几行代码时会老报错,为什么?
其实,并不是你写错了,其实是系统在告诉你这个地方容易出错,需要你小心,
所以!要捕获!!!
其实,并不是你写错了,其实是系统在告诉你这个地方容易出错,需要你小心,
所以!要捕获!!!
这个字节流代码它一般不用来读取文档,一般用来读取的是:图片,音乐,视频这些。。。。
想要读取文本模式的就用字符输入流。。。。
想要读取文本模式的就用字符输入流。。。。
字符输入流
分类:
1。字符输入流(Reader)
1.缓存输入流(BufferedReader)
2.字节转换输入流(InputStreamReader)
1.字符文件输入流(FileReader)
我们一般使用的是FileReader
Reader 名1 = new FileReader("路径")
//因为Reader不能被实例化,所以要用FileReader
//这时要catch一下try下要写
int 名1 = r.read();
while (名1 != -1) {
System.out.print((char) 名1);
名1 = r.read();
//随后就要关闭流了
在catch下
if(r!=null){
try{
r.close();
}
catch(IOException e){
e.printstackTrace();
}
}
/*如果输出的时候是乱码或者看不懂的字符,那么就要对文件做一点小手脚了,
打开小红本(EditPlus)在工具里点击“首选项”,然后再点文件,然后右边的默认编码,
在里面选择UTF-8即可。
当然,也可以用其他的来默认编码模式为UTF-8即可!
这两个代码其实几乎没什么不同,,,
所以,基本上会一个就能掌握俩了*/
//因为Reader不能被实例化,所以要用FileReader
//这时要catch一下try下要写
int 名1 = r.read();
while (名1 != -1) {
System.out.print((char) 名1);
名1 = r.read();
//随后就要关闭流了
在catch下
if(r!=null){
try{
r.close();
}
catch(IOException e){
e.printstackTrace();
}
}
/*如果输出的时候是乱码或者看不懂的字符,那么就要对文件做一点小手脚了,
打开小红本(EditPlus)在工具里点击“首选项”,然后再点文件,然后右边的默认编码,
在里面选择UTF-8即可。
当然,也可以用其他的来默认编码模式为UTF-8即可!
这两个代码其实几乎没什么不同,,,
所以,基本上会一个就能掌握俩了*/
随后讲讲字节输出流
分类:
1.字节输出流(OutputStream)
1文件输出流(FileOutputStream)
2对象输出流(ObjeOutStream)
3过滤输出流(FilerOutputStream)
1缓存流(BufferedOutSeream)
2打印流(PrintStream)
写代码要有输出流和输出位置
OutputStream 名1 = new FileOutputStream("路径");
//顺便导包
//会报错,不用说了,catch
//接着往里面写
String str = "字";
byte[] by = str.getBytes();
分类:
1.字节输出流(OutputStream)
1文件输出流(FileOutputStream)
2对象输出流(ObjeOutStream)
3过滤输出流(FilerOutputStream)
1缓存流(BufferedOutSeream)
2打印流(PrintStream)
写代码要有输出流和输出位置
OutputStream 名1 = new FileOutputStream("路径");
//顺便导包
//会报错,不用说了,catch
//接着往里面写
String str = "字";
byte[] by = str.getBytes();
//将字符串转换为字节,放到数组,给write
//记住,byte数组不能太长。。是要按字节去走的
名1.write(名1);
//再次catch,别忘了关流
//将 名1putStream 名1 = null;放外面
finally {
if(名1!=null){
名1.close(); //到这儿再次catch,将这一行包住,我就不写了
}
}
//这个代码String内的字是可以覆盖原来的字的
//并且如果没有路径中的文件,它会自己创建一个文件并输入String内的文字
//但不能创建文件夹!!!!
//记住,byte数组不能太长。。是要按字节去走的
名1.write(名1);
//再次catch,别忘了关流
//将 名1putStream 名1 = null;放外面
finally {
if(名1!=null){
名1.close(); //到这儿再次catch,将这一行包住,我就不写了
}
}
//这个代码String内的字是可以覆盖原来的字的
//并且如果没有路径中的文件,它会自己创建一个文件并输入String内的文字
//但不能创建文件夹!!!!
字符输出流(主要针对文档的)
结构:
1,Writer
1缓存流(BufferdWriter)
2字节到字符转换流(OutputSteamWriter)
1字符文件输入流(FileWriter)
结构:
1,Writer
1缓存流(BufferdWriter)
2字节到字符转换流(OutputSteamWriter)
1字符文件输入流(FileWriter)
3打印流(PrintWriter)
还是老规矩开头
public class WriterDemo{
public static void main(String[] args) {
Writer w = null;
try{
w = new FileWriter("d:\\writer.txt");
w.write("你好");
//是可以写字符的
//如果写两遍w.write("你好");是无法实现换行的效果的
//想在哪儿换行就在哪加上bufWriter.newLine();即可
}
catch (IOException e) {
e.printStackTrace();
}finally{
if(w!=null){
try {
w.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
还是老规矩开头
public class WriterDemo{
public static void main(String[] args) {
Writer w = null;
try{
w = new FileWriter("d:\\writer.txt");
w.write("你好");
//是可以写字符的
//如果写两遍w.write("你好");是无法实现换行的效果的
//想在哪儿换行就在哪加上bufWriter.newLine();即可
}
catch (IOException e) {
e.printStackTrace();
}finally{
if(w!=null){
try {
w.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
越是到最后越短了。。。。
就这么多,到这儿了就基本是,,照抄,,,对,,,
基本一样。。。
好了今天就与大家分享这么多了,
还是那句话,
新手上路,请多关照
如有出错,请多包涵
评论指出,感激万分
老铁们,晚安!!!
阅读全文
0 0
- JAVA【IO一】IO流
- Java-IO-java的IO流
- java IO 流
- JAVA之IO流
- java IO(字符流)
- java的io流
- JAVA之IO流(
- JAVA 基础IO流
- JAVA 中的IO流
- Java IO 流学习
- JAVA 中的IO流
- Java IO流操作方法。。
- java io流总结
- 转]JAVA IO流
- JAVA IO流
- Java中的IO流
- JAVA IO 流操作
- 详述JAVA IO流
- 安装nodejs和npm以后出现 /usr/bin/env: node: No such file or directory
- 1045. 快速排序(25)
- spring MVC视图解析器
- 色彩表示与编码
- express源码(1)
- JAVA-io流
- ArrayList的序列化
- 排序算法
- 动态装入器(dynamic loader)
- php 常见配置信息报错 url_init()
- UIButton 的 backgroundImage 和 image 的填充模式
- Hadoop—MapReduce
- 第2章 模型评估与选择学习笔记
- Springboot+Mybatis批量导入多条数据