文件流的操作

文件流的操作:

Java中主要的流:

按数据流向:输入流和输出流

输入和输出都是从程序的角度来说

输入流:数据流向程序

输出流:数据从程序流出

按处理单位(宽度):字节流和字符流,

字节流:一次读入或者读出是8位二进制

字符流:一次读入或者读出是16位二进制

JDK中后缀是Stream的是字节流,后缀是Write和Reader是字符流,字符流主要是让人能看懂的。

按照功能分:节点流和处理流

节点流:直接与数据源相连,读入或者写出,

​ 也就是对应资源的流:

  • 文件资源:FileInputStream,FileOutputStream。。。。等等。
  • 内存资源:ByteArrayInputStream,CharArrayReader.
  • 进程间通讯(对管道进行操作):PipedOutStream(字节输出流),Piped…等等。
  • 网络通讯:从套接字得到
  • 键盘输入:

处理流:与节点流一块使用,在节点流的基础上,在套接一层。

  • Bufferd缓冲流。
  • 转换流:InputStreamReader,OutputStreamWritre.
  • 数据流:DataInputStream。DataInputStream
  • 打印流:PrintStream。PrintWrite。

最根本的四大类:

InputStream(字节输入流)

public class InoutTest {
	public static void main(String[] args) throws IOException {
		File file=new File("resource/test1.txt");
		InputStream inputStream=new FileInputStream(file);
		int input;
		while((input=inputStream.read())!=-1) {
			System.out.println((char)input);
		}
		inputStream.close();
		
	}
}

OutputStream(字节输出流)

public class OutputStraem {
	public static void main(String[] args) throws IOException {
//		test1();
//		test2();
//		test3();
		test4();
	}

	private static void test1() throws IOException {
//		文件输出流,会自动创建文件,不能创建目录
		OutputStream outputStream=new FileOutputStream("resource/test2.txt");
		int a=97;
		outputStream.write(a);
		outputStream.close();
		System.out.println("写入成功");
	}
	private static void test2() throws IOException {
//		文件输出流,会自动创建文件,不能创建目录
//		构造参数append,为true是追加模式,false是覆盖模式(默认)
		OutputStream outputStream=new FileOutputStream("resource/test2.txt",true);
//		int a=97;
		byte[] array= {98,99,100};
		outputStream.write(array);
		outputStream.close();
		System.out.println("写入成功");
	}
	private static void test3() throws IOException {
//		文件输出流,会自动创建文件,不能创建目录
//		构造参数append,为true是追加模式,false是覆盖模式(默认)
		OutputStream outputStream=new FileOutputStream("resource/test2.txt",false);
//		int a=97;
		byte[] array= {98,99,100};
		outputStream.write(array);
		outputStream.write(array, 1, 2);
		outputStream.flush();//flusf的作用:把缓冲区内容写入资源
		outputStream.close();//close会flush,在close前应该强制flush,保护性写法
		System.out.println("写入成功");
	}
	private static void test4() throws IOException {
//		文件输出流,会自动创建文件,不能创建目录
//		构造参数append,为true是追加模式,false是覆盖模式(默认)
		OutputStream outputStream=new FileOutputStream("resource/test2.txt",false);
//		int a=97;
//		byte[] array= {98,99,100};
//		outputStream.write('立');一个汉字有两个字节,值写入了前半个,所以显示不出来。
//		outputStream.write(array, 1, 2);
		outputStream.flush();//flusf的作用:把缓冲区内容写入资源
		outputStream.close();//close会flush,在close前应该强制flush,保护性写法
		System.out.println("写入成功");
	}
}

Reader(字符输入流)

public class ReadTest {

	@Test
	public void test() {
		String name="resource/test1.txt";
		try(Reader reader=new FileReader(name)) {
			int i=0;
			while((i=reader.read())!=-1) {
				System.out.println((char)i);
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
	}

}

Write(字符输出流)

public class WriteTest {

	@Test
	public void test() {
		String name="resource/test3.txt";
		try(Writer writer=new FileWriter(name)) {
			writer.write("能写进去");
			writer.write('a');
			writer.flush();
			writer.close();
			System.out.println("写入成功");
		} catch (Exception e) {
			// TODO: handle exception
		}
		String name1="resource/test4.txt";
		try(Writer writer=new FileWriter(name1)) {
			writer.write("能写进去");
			writer.write("\r\n");
			writer.write("能写进去2");
			writer.write("\r\n");
			writer.write("能写进去3");
			writer.write("\r\n");
			writer.write("能写进去4");
//			writer.write('a');
			writer.flush();
			writer.close();
			System.out.println("写入成功");
		} catch (Exception e) {
			// TODO: handle exception
		}
	}

}

缓冲流的读和写:

public class BufferedReaderTest {
	public static void main(String[] args) throws IOException {
		FileReader fileReader=new FileReader("resource/test4.txt");
		BufferedReader bufferedReader=new BufferedReader(fileReader);
		FileWriter fileWriter=new FileWriter("resource/test4.txt");
		BufferedWriter bufferedWriter=new BufferedWriter(fileWriter);
		bufferedWriter.write("新写入的内容1");
		bufferedWriter.newLine();
		bufferedWriter.write("新写入的内容2");
		bufferedWriter.close();
		System.out.println(bufferedReader.readLine());
		System.out.println(bufferedReader.readLine());
//		System.out.println(bufferedReader.readLine());
//		System.out.println(bufferedReader.readLine());
//		System.out.println(bufferedReader.readLine());
		bufferedReader.close();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值