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 ...
随机推荐
- qt mingw64版本编译报错:incorrect register `%rax' used with `l' suffix(movl要改成mov)
环境:WIN10 编译器:mingw64的g++.exe 我的目的是把程序编译成64bit版本的,所以一开始遇到该错误是丈二和尚摸不着头脑,google了一圈也没找到准确的答案.后来从某些回答中大概发 ...
- 使用MultiByteToWideChar转换UTF8为GBK(UTF8在Windows的代码页是CP_UTF8)
两个使用的函数: 1,UTF8转化为Unicode,inline为了编译后更快运行,老用到了,返回字符串为了使用链式表达式 inline WCHAR *UTF8ToUnicode(const cha ...
- Win10《芒果TV》更新v3.8.30流星版:优化稳定性、升级无边框播放体验
随着暑假到来,大波王牌综艺和青春电视剧热浪来袭,Win10版<芒果TV>全平台同步更新流星版v3.8.30,进一步提升稳定性,巩固播放体验,升级剧场模式和画中画无边框体验,我们在芒果等你. ...
- 零元学Expression Blend 4 - Chapter 30 8个Expression Blend4的快捷
原文:零元学Expression Blend 4 - Chapter 30 8个Expression Blend4的快捷 我针对工作区跟视窗的快捷键整理了八个Expression Blend4的快捷, ...
- SynchronizationContext笔记
SynchronizationContext 类是一个基类,可提供不带同步的自由线程上下文. 此类实现的同步模型的目的是使公共语言运行库内部的异步/同步操作能够针对不同的异步模型采取正确的行为.此模型 ...
- 仿win7窗体自动顶部最大化左侧右侧半屏效果(改写nativeEvent,使用AdjustWindowRectEx)
#include "HMainWindow.h" #include <QApplication> #ifdef Q_OS_WIN #include <qt_win ...
- 让Qt在MIPS Linux上运行 good
下载 首先下载Qt everywhere,当前的版本是4.7.2,可以从nokia的网站上下载,也可以从git服务器上下载.考虑到文件有200M 以上的大小,下载速率低于25kBPS的,需要考虑从什么 ...
- 比较DirectX和OpenGL的区别(比较详细)
OpenGL是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库.OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL.IRIS GL是一个工业标准的3D图形软件接口,功能虽然 ...
- 跨越DLL边界传递CRT对象潜在的错误
跨越DLL边界传递CRT对象潜在的错误 翻译:magictong(童磊)2013年5月 版权:microsoft 原文地址:http://msdn.microsoft.com/en-us/librar ...
- play框架之模板
现在网站发展日新月异,网页上显示的东西越来越复杂,看看HTML源码就知道,这东西不是正常人能拼出来的.因此模板应运而生,自我感觉,好的模板应该支持一下功能: 1.支持HTML代码段的复用,即在HTML ...