文档章节

Java基础10

DouDouLee
 DouDouLee
发布于 2016/05/09 20:51
字数 1006
阅读 46
收藏 0
点赞 2
评论 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
博文 91
码字总数 45242
作品 0
西安
学习大数据需要Java基础吗?

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

大数据大咖
06/10
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
你所需要的java提升篇大总结

java基础篇深入解析大总结 java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序的深入解析 java基础(五) Str...

sihailoveyan
04/25
0
0
[Java] JAVA和JVM运行原理

JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。 编译器负责把Jav...

枫兮兮
2014/03/12
0
0
Java培训实战教程之Java基础知识精华部分(一)(二)(三)

Java培训实战教程之Java基础知识精华部分(一)_java概述 =============================================================================Java培训实战教程之Java基础知识精华部分(一)_java概...

黑泽明军
04/13
0
0
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
05/09
0
0
百词斩Java程序员面试11个问题,你会几个?2018-04-10

近日,我们在w3cschool app开发者头条上,可以看到百词斩Java程序员面经。 在分享百词斩Java面经前,w3cschool特别给程序员小伙伴们带来一些Java学习干货: 0、学习Java必备的3大神器 如果你...

W3Cschool
04/10
0
0
Java编程基础知识点和技术点归纳

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰
05/23
0
0
阿里巴巴菜鸟Java一面11个问题,你会几个呢?

近日,w3cschool app开发者头条上分享了阿里菜鸟Java程序员一些面试题。 这吸引了不少程序员小伙伴们的注意。 在分享阿里菜鸟Java程序员面经前,来看下Java面试一些面试经验分享: 0、Java高...

W3Cschool
04/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

@Qualifier指定注入的bean

有这样一种情况,当你创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的一个进行装配,在这种情况下,你可以使用 @Qualifier 注释和 @Autowired 注释通过指定哪一个真正的 ...

少年已不再年少
8分钟前
0
0
gcviewer的使用

1、没有安装git软件 在编译打包GCViewer的过程中,不能执行git命令,错误信息如下: [ERROR] Failed to execute goal org.codehaus.mojo:buildnumber-maven-plugin:1.4:create (create-build...

刀锋
21分钟前
1
0
Android LogUtil 日志优化 调试的时候打印 点击跳转

打印日志的时候,可以点击跳转 LogUtil.java public class LogUtil { private static boolean IS_DEBUG = BuildConfig.DEBUG; public static void i(String tag, String message) {......

Jay_kyzg
31分钟前
0
0
人工智能你必须掌握的32个算法(二)归并排序算法

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子...

木头释然
33分钟前
0
0
第十四章NFS服务搭建与配置

14.1 NFS介绍 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netap...

Linux学习笔记
56分钟前
1
0
流利阅读笔记27-20180716待学习

生了娃照样能打,两位母亲温网会师 Lala 2018-07-16 1.今日导读 现今在生儿育女后回归事业的母亲们已经非常多见,但是很少有人想到,以高强度运动与竞争激烈为特色的竞技体育项目也会有 work...

aibinxiao
57分钟前
6
0
Guava 源码分析(Cache 原理【二阶段】)

前言 在上文「Guava 源码分析(Cache 原理)」中分析了 Guava Cache 的相关原理。 文末提到了回收机制、移除时间通知等内容,许多朋友也挺感兴趣,这次就这两个内容再来分析分析。 在开始之前...

crossoverJie
今天
0
0
OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
今天
948
20
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部