zoukankan      html  css  js  c++  java
  • Java IO基础总结

          Java中使用IO(输入输出)来读取和写入,读写设备上的数据、硬盘文件、内存、键盘......,根据数据的走向可分为输入流和输出流,这个走向是以内存为基准的,即往内存中读数据是输入流,从内存中往外写是输出流。

          根据处理的数据类型可分为字节流和字符流

      1.字节流可以处理所有数据类型的数据,在java中以Stream结尾

      2.字符流处理文本数据,在java中以Reader和Writer结尾。

           我们来看个IO流的详解图:

     

     IO流的本质是对字节和字符的处理,那么我们平时也是用来处理文件的,就从文件处理开始接触这方面的知识。

    1.文件操作(创建文件和文件夹,查看文件)

    		//创建一个文件路径
    		File file = new File("D:\testData.txt");
    		if(file.exists()){
    		//得到文件路径
    		System.out.println(file.getAbsolutePath());
    		//得到文件大小
    		System.out.println("文件大小:"+file.length());
    		}
    		//创建文件和创建文件夹
    		File file1 = new File("d:\iotest.txt");
    		if(!file1.exists())
    		{
    			try {
    				file1.createNewFile();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}else{
    			System.out.println("文件已存在");
    		}
    		//创建文件夹
    		File file2 = new File("d:\testIO");
    		if(file2.isDirectory())
    		{
    			System.out.println("文件夹存在");
    		}else{
    			file2.mkdir();
    		}
    		
    		//列出一个文件夹下的所有文件
    		File f = new File("d:\testIO");
    		if(f.isDirectory())
    		{
    			File lists[] = f.listFiles();
    			for(int i=0;i<lists.length;i++)
    			{
    				System.out.println(lists[i].getName());
    			}
    		}
    

    常用字节流FileInputStream和FileOutputStream:

    FileInputStream:

    FileInputStream fis = null;
    		try {
    			fis = new FileInputStream("D:\testData.txt");
    			byte bytes[]=new byte[1024];
    			int n=0;
    			while((n=fis.read(bytes))!= -1){
    				String str = new String(bytes,0,n);
    				System.out.print(str);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally{
    			try {
    				fis.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    

     

    查看输出:

    FileOutputStream:

    FileOutputStream fos = null;
    		try {
    			fos = new FileOutputStream("D:\testData.txt");
    			String str = "报效国家,舍生忘死";
    			byte bytes[] = str.getBytes();
    			fos.write(bytes);
    		} catch (Exception e) {
                e.printStackTrace();     
    		} finally {
    			try {
    				fos.close();
    			} catch (Exception e2) {
                    e2.printStackTrace();
    			}
    		}
    

    查看一下:

    如果是续写文件,则可以加上参数:

    字符流FileReader和FileWriter:

    //字符流
    		//文件写出  输入流
    		FileReader freader = null;
    		//写入到文件  输出流
    		FileWriter fwriter = null;
    		try {	
    			//创建输入对象
    			freader = new FileReader("d:\testData.txt");
    			//创建输出对象
    			File f1 = new File("e:\testData.txt");
    			if(!f1.exists()){
    				f1.createNewFile();
    			}
    			fwriter = new FileWriter(f1);
    			
    			//读入到内存
    			char chars[] = new char[1024];
    			int n=0;
    			while((n=freader.read(chars))!= -1)
    			{
    				fwriter.write(chars);
    				//System.out.println(chars);
    			}
    			
    			
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    			// TODO: handle exception
    		}finally{
    	        try{
    			freader.close();
    			fwriter.close();
    	        }catch(Exception e){
    	        	e.printStackTrace();
    	        }
    		}
    		
    		
    		
    		//缓冲字符流  bufferedReader  bufferedWriter
    		BufferedReader bfreader = null;
    		try {
    			FileReader freader = new FileReader("d:\testData.txt");
    			bfreader = new BufferedReader(freader);
    			//循环读取
    			String s ="";
    			while((s=bfreader.readLine())!= null)
    			{
    				System.out.println(s);
    			}
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    

      

      

     

  • 相关阅读:
    HTTP协议(三)之缓存
    第三方开源库MBProgressHUD的功能扩展
    CocoaPods pod install/pod update更新慢的问题
    项目总结Version 1.0(三)
    项目总结Version 1.0(二)
    iOS内存管理nonatomic,assign,copy,retain
    Mac升级到Yosemite后默认的php版本不支持imagetfftext函数问题解决
    3333333333333333
    11111111111111111111
    ssssssssssssssss
  • 原文地址:https://www.cnblogs.com/dreamyu/p/6551137.html
Copyright © 2011-2022 走看看