Java 字节输入与输出流

字节输入流

java.io.InputStream抽象类是所有字节输入流的超类,将数据从文件中读取出来。

字节输入流结构图
字节输入流
在Java中针对文件的读写操作有一些流,其中介绍最常见的字节输入流。

FileInputStream类

FileInputStream流被称为字节输入流,对文件以字节的形式读取操作,例如文字,图片等。

构造方法:

  • FileInputStream(File file) ;通过File文件对象创建
  • FileInputStream(String name) ;通过一个文件路径字符串创建

常用读取方法:

  1. 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();
			}
		}
	}
	 
   }
}
  1. 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类

FileOutputStream类是向文件中以字节的形式写入数据,例如图像和图片等。

构造方法:

  1. FileOutputStream(File file);通过一个file对象表示的文件创建一个字节输出流。
  2. FileOutputStream(File file, boolean append);通过一个file对象表示的文件创建一个字节输出流,append表示追加,true代表往后追加,false则要全部覆盖,文件里只存留刚写入的数据。
  3. FileOutputStream(String name);通过一个指定路径名字符串创建一个字节输出流对象。
  4. FileOutputStream(String name, boolean append);通过一个指定路径字符串创建一个字节输出流对象,append同上。

常用写入方法:

  1. write(byte[] b); 将b.length个字节从指定的byte数组中写入到此输出流中。
  2. write(byte[] b, int off, int len); 将指定的byte数组从偏移量off开始到len个字节写入到此输出流中。
  3. write(int b); 将指定字节写入到此输出流中。
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:/../...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();
			}
		}
	}

   }
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java输入输出是用来处理数据输入输出的机制。输入用于从外部读取数据,而输出用于向外部写入数据。 Java中的输入是InputStream类及其子类,主要用于从各种数据源(如文件、网络等)读取数据。常见的输入有FileInputStream(从文件读取)、ByteArrayInputStream(从字节数组读取)、DataInputStream(从其他输入中读取基本数据类型)、ObjectInputStream(从输入中反序列化对象)等。 以下是一个使用FileInputStream读取文件的示例代码: ```java import java.io.*; public class ReadFileExample { public static void main(String[] args) { try { // 创建文件输入 FileInputStream fis = new FileInputStream("test.txt"); // 读取文件内容 int data; while ((data = fis.read()) != -1) { System.out.print((char) data); } // 关闭输入 fis.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` Java中的输出是OutputStream类及其子类,主要用于将数据写入各种目标(如文件、网络等)。常见的输出有FileOutputStream(写入文件)、ByteArrayOutputStream(写入字节数组)、DataOutputStream(将基本数据类型写入其他输出)、ObjectOutputStream(将对象序列化到输出)等。 以下是一个使用FileOutputStream写入文件的示例代码: ```java import java.io.*; public class WriteFileExample { public static void main(String[] args) { try { // 创建文件输出 FileOutputStream fos = new FileOutputStream("output.txt"); // 写入文件内容 String data = "Hello, World!"; fos.write(data.getBytes()); // 关闭输出 fos.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 以上代码只是简单示例,实际应用中通常需要使用try-catch-finally块来确保的正确关闭。另外,还可以使用BufferedInputStream和BufferedOutputStream等类来提高读写性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值