Java核心技术中的程序片段
import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.zip.*;
public class Fragment {
//Java核心技术 卷二 第十版 2.1.1节
private void f001() throws IOException {
FileInputStream in = new FileInputStream("temp.tmp");
byte[] buffer = new byte[100];
//这种编码下,不会发生阻塞
int bytesAvailable = in.available();
if (bytesAvailable > 0) {
in.read(buffer);
}
}
//Java核心技术 卷二 第十版 2.1.3节
private void f002() throws IOException {
//得到用户工作目录
System.getProperty("user.dir");
//得到文件分割符
System.getProperty("line.separator");
System.out.println(File.separator);
/*
有时当多个输入流链接在一起时,你需要跟踪各个中介输入流。例如,当
读输入时,你经常需要预览下一个字节,以了解它是否是你想要的值。
Java通过PushbackInputStream提供这项功能。
——我觉得这个案例并没有体现跟踪各个中介流的功能
*/
PushbackInputStream pbin = new PushbackInputStream(
new BufferedInputStream(
new FileInputStream("temp.tmp")));
int b = pbin.read(); //预读下一个字符
pbin.unread(b); //发现b不是自己需要的,给搁回去
/*
如果又想要预读数据的功能,又想要读数字的功能;
——这个地方很狗,DataInputStream没有unread()方法,所以说,你不能
用in读一个数字,发现不是自己要的,又给搁回去。你还得先用pbin2读几个字
节,自己转换一下,发现不是自己想要的,又给搁回去,可能我这块理解的有问
题吧
*/
PushbackInputStream pbin2;
DataInputStream in = new DataInputStream(
pbin2 = new PushbackInputStream(
new BufferedInputStream(
new FileInputStream("temp.tmp"))));
}
//Java核心技术 卷二 第十版 2.2节
private void f003() {
/*
OutputStreamWriter类将用选定的字符编码方式,把Unicode码元的输出流转换为字节流
InputStreamReader类将包含字节(用某种字符编码方式表示的字符)的输入流转换为可以产生Unicode码元的读入器
*/
Reader in1 = new InputStreamReader(System.in);
Reader in2 = new InputStreamReader(System.in,StandardCharsets.UTF_8);
}
//Java核心技术 卷二 第十版 2.2.1节
private void f004() throws IOException {
//书中这块代码给错了~PrintWriter没有传入一个流和字符集的构造函数
PrintWriter out1 = new PrintWriter("temp.tmp","UTF-8");
PrintWriter out2 = new PrintWriter(
new FileOutputStream("temp.tmp"));
}
//Java核心技术 卷二 第十版 2.2.2节
private void f005() {
/*
BufferedReader类的典型用法
区别与字符类的流的read()方法,该方法用对-1的判定来结束循环
*/
InputStream inputStream = new ByteArrayInputStream(new byte[100]);
try(BufferedReader in = new BufferedReader(
new InputStreamReader(inputStream, StandardCharsets.UTF_8))) {
String line;
while ((line = in.readLine()) != null) {
//do something with line
}
} catch (IOException e) {
e.printStackTrace();
}
}
//Java核心技术 卷二 第十版 2.2.4节
private void f006() {
//得到平台默认编码方式,可以传给某个方法~
Charset.defaultCharset();
//得到所有可用的Charset
Charset.availableCharsets();
//为了获得另一种编码方式的Charset
Charset shiftJIS = Charset.forName("Shift-JIS");
}
//Java核心技术 卷二 第十版 2.3.1节
private void f007() {
/*
DataOutputStream中writeUTF()方法使用的是修订版的8为Unicode。这主要是为了向
后兼容在Unicode还没有超过16位时构建的虚拟机。因为还没有其他方法会使用这种修订版
的UTF-8,所以我们应该只在写出用于Java虚拟机的字符串时才使用writeUTF()方法。其
他时候,我们应该使用writeChars
*/
}
//Java核心技术 卷二 第十版 2.3.2节
private void f008() throws IOException {
/*
需求:我们现在要剖析一个将雇员记录记录到随机访问文件中的示例程序,其中每条记录都
拥有相同的大小,这样我们可以很容易的读入任何记录。假设你希望将文件指针置于第三条
记录处,那么你只需要将文件指针置于恰当的字节位置,然后就可以开始读入了。
*/
RandomAccessFile in = new RandomAccessFile("temp.tmp","rw");
long n = 3;
int RECORD_SIZE=10;
in.seek((n-1)*RECORD_SIZE);
in.writeInt(1000);
}
//Java核心技术 卷二 第十版 2.3.3节
private void f009() throws IOException {
//典型的通读ZIP文件的代码序列
/*
额,很尴尬,这段代码根本就是错误的,ZipInputStream根本就没有一个getInputStream(ZipEntry enter)的方法
ZipInputStream zin= new ZipInputStream(
new FileInputStream("temo.tmp"));
ZipEntry entry;
while((entry=zin.getNextEntry())!=null){
InputStream in = entry.getInputStream(entry);
//read the constents of in
zin.closeEntry();
}
*/
/*
我从Java编程思想中拷贝过来的代码,原来的代码我已经测试过了,现在的代码,我只是做为一种整理
*/
FileInputStream fi = new FileInputStream("test.zip");
CheckedInputStream csumi = new CheckedInputStream(fi, new Adler32());
ZipInputStream in = new ZipInputStream(csumi);
BufferedInputStream bis = new BufferedInputStream(in);
ZipEntry ze;
while ((ze = in.getNextEntry()) != null) {
//read the constents of bis
in.closeEntry();
}
bis.close();
}
//Java核心技术 卷二 第十版 2.3.3节
private void f010() throws IOException {
//典型的对文件进行压缩的过程
String[] files = new String[10];
FileOutputStream fout = new FileOutputStream("test.zip");
ZipOutputStream zout = new ZipOutputStream(fout);
for(String filename : files)
{
ZipEntry ze = new ZipEntry(filename);
zout.putNextEntry(ze);
//send data to zout
zout.closeEntry();
}
zout.close();
}
}
Java核心技术中的程序片段的更多相关文章
- Java语言中的程序流程控制
(1. 流程控制 有三种基本技术可以改变程序的控制流程: A.调用方法 :将导致控制流程离开当前方法,转移到被调用的方法. B.选择 : a. if / else 语句 b. switch语句 ...
- java核心技术(第十版卷一)笔记(纯干货!)
这是我读过的第三本关于java基础的书.第一本<<java从入门到精通>>这本书让我灵识初开.第二本<<java敏捷开发>>这本书则是有一次被一位师傅批 ...
- java中的数据类型,运算符,字符串,输入输出,控制流,大数值,数组; 《java核心技术卷i》 第三章:java基本程序结构;
<java核心技术卷i> 第三章:java基本程序结构: 每次看书,去总结的时候,总会发现一些新的东西,这次对于java的数组有了更深的了解: java中的数据类型,运算符,字符串,输入输 ...
- 20个非常有用的Java程序片段
下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...
- Java程序片段
下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 ? 1 2 String a = String.valueOf(2); //integer to numer ...
- Java开发中程序和代码性能优化
现在计算机的处理性能越来越好,加上JDK升级对一些代码的优化,在代码层针对一些细节进行调整可能看不到性能的明显提升, 但是我觉得在开发中注意这些,更多的是可以保持一种性能优先的意识,对一些敲代码时间比 ...
- JAVA文件中获取路径及WEB应用程序获取路径方法
JAVA文件中获取路径及WEB应用程序获取路径方法 1. 基本概念的理解 `绝对路径`:你应用上的文件或目录在硬盘上真正的路径,如:URL.物理路径 例如: c:/xyz/test.txt代表了tes ...
- Java中获得程序当前路径的4中方法
Java中获得程序当前路径的4中方法: 在Application中: import java.util.*; public class TestUserDir { public static void ...
- 整理:20个非常有用的Java程序片段
下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...
随机推荐
- WPF显示html的几种方法
原文:WPF显示html的几种方法 客户希望系统在一些特定的条件下,界面上能显示用户自定义的格式和内容,格式和内容通过html指定. 基本上在wpf中显示html有以下四种方法. 1. W ...
- 深度网络中的Tricks
数据增强(Data augmentation) 预处理(Pre-processing) 初始化(Initializations) 训练中的Tricks 激活函数(Activation function ...
- Ceph OpenSSL
Ceph OpenSSL 1. SSL介绍 SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信 ...
- 跨平台网络通信与服务器框架 acl 3.2.0 发布,acl_cpp 是基于 acl 库的 C++ 库
acl 3.2.0 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/F ...
- Zookeeper详解-API(六)
ZooKeeper有一个绑定Java和C的官方API.Zookeeper社区为大多数语言(.NET,python等)提供非官方API.使用ZooKeeper API,应用程序可以连接,交互,操作数据, ...
- bean 解析、注册、实例化流程源码剖析
本spring源码的版本:4.3.7 Spring bean的加载主要分为以下6步: (1)读取XML配置文件 (2)XML文件解析为document文档 (3)解析bean (4)注册bean (5 ...
- spring boot 2.x 系列 —— spring boot 整合 kafka
文章目录 一.kafka的相关概念: 1.主题和分区 2.分区复制 3. 生产者 4. 消费者 5.broker和集群 二.项目说明 1.1 项目结构说明 1.2 主要依赖 二. 整合 kafka 2 ...
- Electron为文件浏览器创建图标(三)
在前面的文章中,请看之前文章,我们已经完成了使用 electron做文件浏览器这么一个应用,现在我们需要为应用创建图标操作.为应用创建图标以后,我们就可以从计算机中与其他应用区分开来,如果我们自己会做 ...
- Educational Codeforces Round 66 (Rated for Div. 2) A
A. From Hero to Zero 题目链接:http://codeforces.com/contest/1175/problem/A 题目 ou are given an integer n ...
- 微信小程序地图开发总结
最近在做一个微信小程序地图插件,通过传入起始位置名称和经纬度信息,就可以跳转到路线规划插件页面中,在该页面中,可以根据起始位置查询自驾,公共交通,步行等方式的路线信息,并且在地图上显示路线信息,在这个 ...