第十三节 java I/O流与文件操作,输入输出流

目录

1.字节流

Input Stream输入流,用于从数据源读取数据

Output Stream输出流,用于将数据写入输出目标

读   再加以改进

改进

 2,字符流​编辑


不管哪种语言都必须有文件或设备沟通的能力,java中引入流的概念,数据流向我们程序中

1个字节(byte) == 8个二进制位(bit)

8个二进制位(bit) ,可以用 十进制整数表示 即,1个字节可以用255以内的十进制整数表示

1个字符(char),占的字节与编码有关。英文字符占1个字节;中文字符,在UTF8中占3个字节,在GBK中占2个字节

GBK中文占用2个字节 由2个255内的十进制整数表示

1.字节流

Input Stream输入流,用于从数据源读取数据

Output Stream输出流,用于将数据写入输出目标


package one;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class test111 {
	public static void main(String[] args)
	{
		File file=new File("yu.txt");//这是文件的相对路径,没有根目录一直往下找
		try {//必须处理异常
			InputStream in=new FileInputStream("yu.txt");
			int jg=-1;
			while((jg=in.read())!=-1)
			{
				
				System.out.println(jg);
			}
			in.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}

}

 


package one;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class test111 {
	public static void main(String[] args)
	{
		File file=new File("yu.txt");//这是文件的相对路径,没有根目录一直往下找
		try {//必须处理异常
			InputStream in=new FileInputStream(file);
			OutputStream out=new FileOutputStream("yunew.txt");
			
			int jg=-1;
			while((jg=in.read())!=-1)
			{
				out.write(jg);
			}
			in.close();
			out.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}

}

读   再加以改进


package one;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class test111 {
	public static void main(String[] args)
	{
		File file=null;
		InputStream in=null;
		OutputStream out=null;
		try {//必须处理异常
			file=new File("yu.txt");//这是文件的相对路径,没有根目录一直往下找
			 in=new FileInputStream(file);//出异常
			 out=new FileOutputStream("yunew.txt");
			
			int jg=-1;
			while((jg=in.read())!=-1)
			{
				out.write(jg);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		finally {
			try {
				if(in!=null)
				in.close();//空执行close报空指针异常呀
				if(out!=null)
				out.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}
	}

}

改进

 2,字符流


package one;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class test3333 {
	public static void main(String args[]) throws IOException
	{
			Reader r=new FileReader("yu,txt");
			char[] c=new char[4];
			int len=-1;
			
			while((len=r.read(c))!=-1)
			{
				System.out.println(new String(c,0,len));
			}
	}

}

文件读写  输入输出流

文本文件

一个字节一个字节写   8位十进制最大255

int read() throws IOException    字节

java.io.OutputStream     将十进制数按字节

用文件的类 表达文件 1.txt 相对路径 :工程是同级的  绝对路径C盘下 D

万物皆对象  都能封装成对象

字节流 完成读写  以自己的字节

 从文件中去读  1.txt      file      inputstream

直接给出路径 它自动封装成类 读写    

package one;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class T1 {
	public  static void main(String[] args)
	{
		File file1=new File("1.txt");//创建文件  定义输入输出流  管道对接   抓取  有效关闭  close  try   catch
		File file2=new File("1.txt");
		OutputStream out=null;
		InputStream in= null;
		try {
			out=new FileOutputStream(file2);
			in=new FileInputStream(file1);
			int data;
			while((data=in.read())!=-1)
			{
				System.out.println(data);
			}
			byte[] b=new byte[2];
			int gs=0;
			while((gs=in.read(b))!=-1)
			{
				System.out.println(new String(b,0,gs));//字节数组 按字节长度 转换成Stinr类型进行输出
			}//读一个  三替换了 四保留了  默认两个了
			//指定最后转换字节的个数  完成字符串的拼接    注意  转换 记住有个数问题  个数表述你转换是否完全
			while((gs=in.read(b))!=-1)
			{
				out.write(b,0,gs);
			}//利用读写  字节 字节流
		}//读字节和字节数组
		catch(Exception e)
		{
			System.out.println(e);
		}
		finally
		{
			try
			{
				if(in!=null)
					in.close();
				if(out!=null)
					out.close();
			}
			catch(Exception e)
			{
				System.out.println(e);
			}
			
		}//注意关闭  还有要定义公有变量
	}

}

麻烦  关闭时------字节流 自动关闭

 字符流  两个类  以字符的方式进行读写的

字节换成字符  无非就是两个两个字节去读

流的定义 支持close自动关闭

Bufferread 加工流  readLine一行相当于一块  有能力一行一行读  基本流加工

通常 用字符流

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能边缘探索记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值