浅谈IO流常遇到的一些问题,有关输入流和输出流的问题,InputStream和OutputStream,Reade和Writer等

本文深入讲解Java中的IO流概念,包括基本的File类操作,字节流与字符流的区别及应用,输入输出流的分类与核心方法,以及如何使用FileInputStream、FileOutputStream等进行文件的读写。同时,探讨了对象的序列化与反序列化,缓冲流的使用,以及转换流和随机访问文件的应用。

IO


1、IO->Input  Output

  //构造方法

	public static void test1(){
		File file = 
				new File("c:\\a\\b\\a.txt");
		File file2  = 
				new File("c:\\a\\b","a.txt");
		
		File path = 
				new File("c:\\a\\b");
		File file3 = 
				new File(path,"a.txt");
		System.out.println(file+","+file2+","+file3);
	}

//常用方法

public static void test4(){
		File file =  new File("a.txt");  //创建一个新文件
		System.out.println(file.isFile());  //判断是否为一个文件
		System.out.println(file.isDirectory());  //判断是否为一个文件夹
		System.out.println(file.getName());  //得到文件的名字
		System.out.println(file.getPath());  //得到文件相对的路径
		System.out.println(file.getAbsolutePath());   //得到文件的绝对路径
		System.out.println(file.length());   //得到文件内容的长度
	}

//文件的创建和删除

public static void test21(){
          //当没有指明路径时,文件被默认创建在当前工程下
		File file = new File("c:\\a\\b\\c");
		if(!file.exists()){
			boolean b = file.mkdirs();
			System.out.println("创建:"+b);
		}else{
			boolean b = file.delete();
			System.out.println("删除:"+b);
		}
	}

2、按照流的读写方式

     字节流:字节流读取的时候,读到一个字节就返回一个字节,可以处理所有的类型数据。主要处理的是byte类型的数据,以byte数组为准,主要操作类是OutputStream、InputStream

     字符流:字符流使用了字节流读到一个或多个字节,先去查指定的编码表,将查到的字符返回。只能处理字符数据。java提供了Reader、Writer两个专门操作字符流的类。


3、按照流的方向

       输入流是写入数据,输出流是输出数据。

     
4、输入流的核心方法:read()       操作的数组类型
      输出流的核心方法:write()

      输入流:字节流使用InputStream,字符流使用Reader

      输出流:字符流使用OutputStream,字符流使用Writer

      转换流:使用InputStreamReader,OutputStream来关联,实际上是通过byte[]和String来关联

5、操作的数组类型
        字节流:byte类型
        字符流:char类型
6、FileInputStream和FileOutputStream
     使用步骤:
           选择流类(输入还是输出)
           确定方法(read还是write)
           关闭流   close
7、对象的输入流和输出流
      对象的序列化:把对象转换成二进制的流,写到数据文件
      对象的反序列化:把数据文件中二进制的流代表的数据,恢复为对象

8、按照是否能直接操作数据文件
        节点流:直接在构造方法中传入要读写的文件对象或文件名
        处理流:不直接在构造方法中传入要读写的文件对象或文件名

9、FileReader和FileWriter
 
10、缓冲流:BufferdReader 读取   和   BufferdWriter   \n
                     readLine()   成行读取
       打印流:PrintWriter();  
                     println();

11、转换流:InputStreamReader    OutputStreamWriter

12、输入流和输出流是一个流对象:RandomAccessFile类

public class Demo3 {
	public static void test1() throws IOException {
		FileWriter fw=new FileWriter("fw.txt");
		fw.write("hello姬楚");
		fw.close();
	}
	public static void test2() throws IOException {
		File file=new File("fw.txt");
		if(!file.exists()) {
			file.createNewFile();
		}
		FileReader fr=new FileReader(file);
		char[] buf=new char[(int)file.length()];
		fr.read(buf);
		System.out.println(new String(buf));
	}
	//练习:复制fw.txt中的内容到fw1.txt文件中
	public static void test3() throws IOException {
		
		File file=new File("fw.txt");
		if(!file.exists()) {
			file.createNewFile();
		}
		FileReader fr=new FileReader(file);
		char[] buf=new char[(int)file.length()];
		fr.read(buf);
		FileWriter fw1=new FileWriter("fw1.txt");
		fw1.write(buf);
		fr.close();
		fw1.close();
		
		
//		fr.read(buf);
//		System.out.println(new String(buf));
	}
public class Demo4 {
	public static void test1() throws IOException {
		PrintWriter pw=new PrintWriter("pw.txt");
		pw.println("张三 123456 zhangsan@tedu.cn");
		pw.println("李四 123456 lisi@tedu.cn");
		pw.flush();//清空
		pw.close();
	}
	
	public static void test2() throws IOException {
		//创建一个缓存流的输入流的对象
		BufferedReader br=new BufferedReader(new FileReader("pw.txt"));
		String str="";
		//readLine方法:返回一行,如果返回值为null,说明文件内容读取完毕
		while((str=br.readLine())!=null) {
			String[] value=str.split("\\s");
			String name=value[0];
			String phone=value[1];
			String email=value[2];
			System.out.println("name:"+name+",phone:"+phone+",email:"+email);
		}
		br.close();
		
	}
	
	public static void test3() throws IOException {
		InputStream ins=new FileInputStream("ins.txt");
		BufferedReader br=new BufferedReader(new InputStreamReader(ins));
	}

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值