Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
8a8bda27
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
3
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8a8bda27
编写于
1月 31, 2014
作者:
A
anazarov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8032020: Update try-with-resources demo
Reviewed-by: darcy, alanb, smarks
上级
303aa45f
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
339 addition
and
0 deletion
+339
-0
src/share/sample/try-with-resources/index.html
src/share/sample/try-with-resources/index.html
+36
-0
src/share/sample/try-with-resources/src/CustomAutoCloseableSample.java
...ple/try-with-resources/src/CustomAutoCloseableSample.java
+137
-0
src/share/sample/try-with-resources/src/Unzip.java
src/share/sample/try-with-resources/src/Unzip.java
+83
-0
src/share/sample/try-with-resources/src/ZipCat.java
src/share/sample/try-with-resources/src/ZipCat.java
+83
-0
未找到文件。
src/share/sample/try-with-resources/index.html
0 → 100644
浏览文件 @
8a8bda27
<!DOCTYPE html>
<html>
<head>
<title>
Try-with-Resources Feature Demo
</title>
</head>
<body>
<h2>
Try-with-Resources Feature Demo
</h2>
<p>
This demo shows how to use the try-with-resources feature introduced in JDK7.
</p>
<ul>
<li><h3>
Custom AutoCloseable.
</h3>
<p>
Shows how to use a custom resource with the try-with-resources construct.
For more information, see the source file.
</p>
Source:
<a
href=
"src/CustomAutoCloseableSample.java"
>
src/CustomAutoCloseableSample.java
</a>
<li><h3>
Unzip
</h3>
<p>
Extracts archived files. For more information, see the source file.
</p>
Source:
<a
href=
"src/Unzip.java"
>
src/Unzip.java
</a>
<li><h3>
ZipCat
</h3>
<p>
Prints data about a specified file from an archive. For more information, see the source file.
</p>
Source:
<a
href=
"src/ZipCat.java"
>
src/ZipCat.java
</a>
</ul>
</body>
</html>
\ No newline at end of file
src/share/sample/try-with-resources/src/CustomAutoCloseableSample.java
0 → 100644
浏览文件 @
8a8bda27
/*
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This source code is provided to illustrate the usage of a given feature
* or technique and has been deliberately simplified. Additional steps
* required for a production-quality application, such as security checks,
* input validation, and proper error handling, might not be present in
* this sample code.
*/
import
java.io.BufferedOutputStream
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.io.PrintStream
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
/**
* This sample demonstrates the ability to create custom resource that
* implements the {@code AutoCloseable} interface. This resource can be used in
* the try-with-resources construct.
*/
public
class
CustomAutoCloseableSample
{
/**
* The main method for the CustomAutoCloseableSample program.
*
* @param args is not used.
*/
public
static
void
main
(
String
[]
args
)
{
/*
* TeeStream will be closed automatically after the try block.
*/
try
(
TeeStream
teeStream
=
new
TeeStream
(
System
.
out
,
Paths
.
get
(
"out.txt"
));
PrintStream
out
=
new
PrintStream
(
teeStream
))
{
out
.
print
(
"Hello, world"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
System
.
exit
(
1
);
}
}
/**
* Passes the output through to the specified output stream while copying it into a file.
* The TeeStream functionality is similar to the Unix tee utility.
* TeeStream implements AutoCloseable interface. See OutputStream for details.
*/
public
static
class
TeeStream
extends
OutputStream
{
private
final
OutputStream
fileStream
;
private
final
OutputStream
outputStream
;
/**
* Creates a TeeStream.
*
* @param outputStream an output stream.
* @param outputFile an path to file.
* @throws IOException If an I/O error occurs.
*/
public
TeeStream
(
OutputStream
outputStream
,
Path
outputFile
)
throws
IOException
{
this
.
fileStream
=
new
BufferedOutputStream
(
Files
.
newOutputStream
(
outputFile
));
this
.
outputStream
=
outputStream
;
}
/**
* Writes the specified byte to the specified output stream
* and copies it to the file.
*
* @param b the byte to be written.
* @throws IOException If an I/O error occurs.
*/
@Override
public
void
write
(
int
b
)
throws
IOException
{
fileStream
.
write
(
b
);
outputStream
.
write
(
b
);
}
/**
* Flushes this output stream and forces any buffered output bytes
* to be written out.
* The <code>flush</code> method of <code>TeeStream</code> flushes
* the specified output stream and the file output stream.
*
* @throws IOException if an I/O error occurs.
*/
@Override
public
void
flush
()
throws
IOException
{
outputStream
.
flush
();
fileStream
.
flush
();
}
/**
* Closes underlying streams and resources.
* The external output stream won't be closed.
* This method is the member of AutoCloseable interface and
* it will be invoked automatically after the try-with-resources block.
*
* @throws IOException If an I/O error occurs.
*/
@Override
public
void
close
()
throws
IOException
{
try
(
OutputStream
file
=
fileStream
)
{
flush
();
}
}
}
}
src/share/sample/try-with-resources/src/Unzip.java
0 → 100644
浏览文件 @
8a8bda27
/*
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This source code is provided to illustrate the usage of a given feature
* or technique and has been deliberately simplified. Additional steps
* required for a production-quality application, such as security checks,
* input validation, and proper error handling, might not be present in
* this sample code.
*/
import
java.io.IOException
;
import
java.io.UncheckedIOException
;
import
java.nio.file.*
;
import
static
java
.
nio
.
file
.
StandardCopyOption
.
REPLACE_EXISTING
;
/**
* Extract (unzip) a file to the current directory.
*/
public
class
Unzip
{
/**
* The main method for the Unzip program. Run the program with an empty
* argument list to see possible arguments.
*
* @param args the argument list for {@code Unzip}.
*/
public
static
void
main
(
String
[]
args
)
{
if
(
args
.
length
!=
1
)
{
System
.
out
.
println
(
"Usage: Unzip zipfile"
);
}
final
Path
destDir
=
Paths
.
get
(
"."
);
/*
* Create AutoCloseable FileSystem. It will be closed automatically
* after the try block.
*/
try
(
FileSystem
zipFileSystem
=
FileSystems
.
newFileSystem
(
Paths
.
get
(
args
[
0
]),
null
))
{
Path
top
=
zipFileSystem
.
getPath
(
"/"
);
Files
.
walk
(
top
).
skip
(
1
).
forEach
(
file
->
{
Path
target
=
destDir
.
resolve
(
top
.
relativize
(
file
).
toString
());
System
.
out
.
println
(
"Extracting "
+
target
);
try
{
Files
.
copy
(
file
,
target
,
REPLACE_EXISTING
);
}
catch
(
IOException
e
)
{
throw
new
UncheckedIOException
(
e
);
}
});
}
catch
(
UncheckedIOException
|
IOException
e
)
{
e
.
printStackTrace
();
System
.
exit
(
1
);
}
}
}
src/share/sample/try-with-resources/src/ZipCat.java
0 → 100644
浏览文件 @
8a8bda27
/*
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This source code is provided to illustrate the usage of a given feature
* or technique and has been deliberately simplified. Additional steps
* required for a production-quality application, such as security checks,
* input validation, and proper error handling, might not be present in
* this sample code.
*/
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.nio.file.FileSystem
;
import
java.nio.file.FileSystems
;
import
java.nio.file.Files
;
import
java.nio.file.Paths
;
/**
* Prints data of the specified file to standard output from a zip archive.
*/
public
class
ZipCat
{
/**
* The main method for the ZipCat program. Run the program with an empty
* argument list to see possible arguments.
*
* @param args the argument list for ZipCat
*/
public
static
void
main
(
String
[]
args
)
{
if
(
args
.
length
!=
2
)
{
System
.
out
.
println
(
"Usage: ZipCat zipfile fileToPrint"
);
}
/*
* Creates AutoCloseable FileSystem and BufferedReader.
* They will be closed automatically after the try block.
* If reader initialization fails, then zipFileSystem will be closed
* automatically.
*/
try
(
FileSystem
zipFileSystem
=
FileSystems
.
newFileSystem
(
Paths
.
get
(
args
[
0
]),
null
);
InputStream
input
=
Files
.
newInputStream
(
zipFileSystem
.
getPath
(
args
[
1
])))
{
byte
[]
buffer
=
new
byte
[
1024
];
int
len
;
while
((
len
=
input
.
read
(
buffer
))
!=
-
1
)
{
System
.
out
.
write
(
buffer
,
0
,
len
);
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
System
.
exit
(
1
);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录