| 
 
| 1、包就是Java里用来组织类的命名空间 2、以下这些可见性都是递增的,后一个总会包含前一个的所有可见性
 private可见性仅给予定义类内的成员访问权
 (default)可见性给予同一个包下的类访问权,即类B与类A在同一个包中则可以访问(default)修饰的成员
 protected可见性给予子类访问权,即如果类B扩展了类A,则即使类B与类A不在同一个包中,类B也可以访问类A的protected修饰的成员
 public可见性给予所有类访问权,public成员任何类都可以访问
 
 
 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
 
 IO流的分类
 
 ?根据处理数据类型的不同分为:字符流和字节流
 
 ?根据数据流向不同分为:输入流和输出流
 
 一、流的分类
 
 1、按功能分
 
 读取流:InputStream Reader
 
 写出流:OutPutStream Writer
 
 2、按流的类型分类
 
 字节流:InputStream OutputStream
 
 字符流:Reader    Writer
 
 二、流功能分析
 
 读取流是从输入设备或数据对象中读取数据到程序,用程序进行处理读入的数据,写出流是把程序处理的数据输出到输出设备上比如硬盘和控制台。
 
 字节流读取和写入的数据单位是字节,可以读取和写入任何类型的数据。达内西安Java培训讲师表示,字符流读取跟写入的数据单位是字符,只能读取和写入文本类型的数据。当需要读取或写入文本型的数据时要用字符流,因为它会比字节流读写字符更方便和高效,相反当数据不是文本型时只能用字节流来读取跟写入。
 
 三、流中读写方法的示例。(当用到IO流时就有可能出现IO异常,所以需要处理可能的异常)
 
 字节流:
 
 FileOutputStream fos = new FileOutputStream("D://xxx.xxx");
 
 fos.write("dsfdsf".getBytes());//写入字节数组
 
 fos.close();           //用完后需要关闭流,释放资源。字节流不需要Flush
 
 FileInputStream fis = new FileInputStream("D://xxx.xxx");
 
 fis.read();       //读取一个字节
 
 fis.close();
 
 字符流:
 
 FileWriter fw = new FileWriter("D:\\xxx.txt");
 
 fw.write("sdfsdfsdf");//可以直接写入字符串
 
 fw.flush();         //写完后需要Flush,才能真正写道输出设备
 
 fw.close();         //close()时也会Flush.
 
 FileReader fr = new FileReader("D:\\xxx.txt");
 
 fr.read(char[] ch);//可以读取一个字符数组的内容
 
 fr.close();
 
 四、转换流
 
 当需要流之间的转换时会用到转换流。
 
 1、把字节读取流转换成字符读取流
 
 InputStreamReader isr = new InputStreamReader(newFileInputStream("xxx.xxx"));
 
 2、把字符输出流转化成字节输出流
 
 OutputStreamWriter osw = new OutputStreamWriter(newFileOutputStream("xx.xxx"));
 
 五、缓冲流
 
 需要提高流的读写效率时会用到缓冲流
 
 1、字节缓冲流
 
 BufferedInputStream bis = new BufferedInputStream(newFileInputStream("xx"));
 
 BufferedOutputStream bos = new BufferedOutputStream(newFileOutputStream("xx"));
 
 2、字符缓冲流
 
 BufferedReader br = new BufferedReader(new FileReader("xx.txt"));
 
 BufferedWriter bw = new BufferedWriter(new FileWriter("xx.txt"));
 
 缓冲流对读写功能进行了增强,而且使用缓冲技术提高了读写效率,所以当需要提高程序的读写效率时要使用缓冲流。
 
 六、File类的使用
 
 1、创建
 
 boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false.
 
 和输出流不一样,输出流对象已建立创建文件。而且文件已经存在,会覆盖。
 
 boolean mkdir()创建文件夹
 
 boolean mkdirs()创建多级文件夹
 
 2、删除。
 
 boolean delete();删除失败时返回false.如果文件正在被使用,则删除不了返回false.
 
 void deleteOnExit();在程序退出时删除指定文件。
 
 3、判断
 
 boolean exists();文件是否存在。
 
 isFile():是不是文件
 
 isDirectory();是不是文件夹
 
 isHidden();是不是隐藏文件
 
 isAbsolute();是不是绝对路径
 
 4、获取信息
 
 getName();文件名
 
 getPath();文件路径
 
 getParent();上一层路径
 
 getAbsolutePath();绝对路径
 
 
 
 
 
 
 
 黑马程序员---System你了解多少
 描述系统的一些信息。并且该类中的方法和属性都是静态的。
 Out:标准输出,默认是控制台。
 Int:标准输入,默认是键盘
 获取属性的方法: Properties   getProperties()。Properties是hashtable的子类,也就是Map集合的一个子类对象,所以可以通过Map的方法去吃该集合中的元素。该集合中都是字符串,没用泛型定义。
 Properties中有一个list()可以让这些获得的信息写入到一个流中去。如properties.list(System.out)
 System.setProperty(“mykey”,”value”);//在系统中自定义一些信息。
 System.getProperty(“os.name”);//获取指定的属性信息。
 Java -Dhaha=“xiaoming”//在虚拟机启动时,动态加载一些属性信息。
 | 
 |