文档章节

Java基础10

DouDouLee
 DouDouLee
发布于 2016/05/09 20:51
字数 1006
阅读 46
收藏 0
1、Java IO流

Java中输入输出都被称为抽象的流,流可以看作一组有序的字节集合,数据在两设备之间的传输。

流分为两大类:字节类和字符类。字节流以字节(8bit)为单位,包含两个抽象类:InputStream和OutputStream;字符流以字符为单位(16bit)为单位,包含两个抽象类:Reader和Writer。两者最主要的区别是:字符流用到了缓存,字节流在处理输入输出时不会用到缓存。Java IO类在设计时采用装饰者模式,可以在运行时给对象动态的添加一些额外的职责。

2、File类

管理文件和目录。

 

 package Four;

//列出目录下所有文件和文件夹

import java.io.File;
public class FileTest {
 public static void main(String[] args){
  File file = new File("F:\\");//File(String pathname)
  //判断对象对应的文件是否存在
  if(!file.exists()){
   System.out.println("directory is empty");
   return;
  }
  File[] fileList = file.listFiles();//返回目录中所有文件的File对象
 
  for(int i = 0; i < fileList.length; i++){
 
   if(fileList[i].isDirectory())//判断对象表示的是否是文件夹
  
    System.out.println("directory is "+ fileList[i].getName());
   else
    System.out.println("file is "+ fileList[i].getName());
  }
 }
}/*
directory is $RECYCLE.BIN
file is 9班名单 电话号码.xls
directory is Friends (1080p x265 Joy)
directory is IDP
directory is JiaXiao
file is locus.txt
file is NestClass$Inner1$Inner2.class
file is NestClass$Inner1.class
file is NestClass$Nested1$Nested2.class
file is NestClass$Nested1.class
file is NestClass.class
file is NestClass.java
file is pagefile.sys
directory is RECYCLER
file is ReturnAnonymous.java
file is ROAD.txt
directory is Sensor
directory is Sex and the City
directory is Sunny证件照
directory is System Volume Information
directory is text
directory is ThinkingInJava
directory is WGHO
file is wgldr
file is WINGHO..
directory is YUANYUANLI论文first
directory is zhic的电影
directory is 壁花少年.2012.中英字幕£CMCT我爱罗
file is 希特勒回来了_bd.mp4
directory is 老友记.第十季.2003.中英字幕£CMCT呆呆熊*/

3、Java NIO(Nonblocking IO)非阻塞IO

在网络编程中有非常重要的作用。非阻塞IO出现之前,Java是通过传统的Socket来实现基本的网络通信功能的,若client还没有对server发起连接请求,accept就会阻塞,若连接成功,当数据还没成功,对read的调用同样会阻塞。当处理多个连接是,需要采用多线程方式,由于每个线程都有自己的占空间,而阻塞会导致大量线程进行上下文切换,使程序运行效率低下,因此Java4引入NIO来解决这个问题。

详情看http://www.cnblogs.com/dolphin0520/p/3919162.html

4、Java序列化

对象持久化的方式。是一种将对象以一连串的字节描述的过程。所有要实现序列化的类都必须implements Serializable接口。

package Four;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class PeopleSerializable implements Serializable{
 private String name;
 private int age;
 public PeopleSerializable(){
  this.name = "Summer";
  this.age = 1;
 }
 public int getAge(){
  return age;
 }
 public void setAge(int age){
  this.age = age;
 }
 public String getName(){
  return name;
 }
 public void setName(String name){
  this.name = name;
 }
 public static void main(String[] args){
  PeopleSerializable p = new PeopleSerializable();
  ObjectOutputStream oos = null;
  ObjectInputStream ois = null;
  try {
 /*java.io.FileOutputStream.FileOutputStream(String name) throws FileNotFoundException
Creates a file output stream to write to the file with the specified name.

*///语句执行后自动在F盘生成people.out
 
   FileOutputStream fos = new FileOutputStream("F:\\people.out");
   oos = new ObjectOutputStream(fos);
   oos.writeObject(p);
   oos.close();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   //e.printStackTrace();
  }
  PeopleSerializable p1;
  try {
   FileInputStream fis = new FileInputStream("F:\\people.out");
   ois = new ObjectInputStream(fis);
   p1 = (PeopleSerializable)ois.readObject();
   System.out.println("name " + p1.getName());
   System.out.println("age " + p1.getAge());
   ois.close();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 HashMap<String,String> h = new HashMap<String,String>();
 /*Set<Entry<String, String>> java.util.HashMap.entrySet()
Returns a Set view of the mappings contained in this map. 
*/
 Iterator i =  h.entrySet().iterator();
 @SuppressWarnings("rawtypes")
 Map.Entry e = (Entry) i.next();
}/*name Summer
age 1
*/

序列化会影响系统性能。通常在下列情况下使用:

1)需要通过网络来发送对象,或对象的状态需要被持久化到数据库或文件中。

2)序列化能实现深复制,即可以复制引用的对象。(待理解)

序列化特点:

1)若一个类能被序列化,那么它的子类也可以序列化

2)static、transient两种类型的数据成员不能被序列化

 

 

 

© 著作权归作者所有

共有 人打赏支持
DouDouLee
粉丝 6
博文 95
码字总数 45242
作品 0
西安
大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
07/25
0
0
学习大数据需要Java基础吗?

近几年,很多人都听到过一个名词“大数据”也有一部分人选择学习了解大数据,那么大数据到底是什么,学习大数据需要有Java基础吗? 推荐一个大数据学习交流群 119599574每天晚上20:10都有一节...

大数据大咖
06/10
0
0
JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52724939 JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千! 经过了几...

Aduroidpc
2016/10/02
0
0
几周内搞定Java的10个方法

不要将Java与JavaScript弄混了,Java的目标是“一次编译,到处调试”(呃,不对,是“到处运行”)。简单来说,就是Java程序可以直接在任何设备上运行。 Java语言是什么? 不管我们是否意识到...

拉偶有所依
2015/03/11
0
0
native关键字初识--java调用非java代码的接口

Java基础知识——JNI入门介绍(上) Java™ 本机接口(Java Native Interface,JNI)是一个标准的 Java API,它支持将 Java 代码与使用其他编程语言编写的代码相集成。如果您希望利用已有的代...

成长中的菜鸟
2015/02/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
0
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
5
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
31
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部