📄 yyrm9.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0049)http://www.chinajavaworld.net/doc/yyrm/yyrm9.html -->
<HTML><HEAD><TITLE>Java开发者----第 九 章 Java输 入 输 出 操 作</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="Java,JDBC,EJB,Open Source,jdk,rmi" name=description>
<META
content="Java, servlets, Java servlet, Javascript, ActiveX, VRML, applet, applets, directory, news, jdbc, applications, Java applications, Java developer, Java development, developer, classes, Jars.com, Jars, intranet, Java applet, Javabeans, Java products, JDK, Java development kit, java development environment, JIT, JavaPlan, enterprise tools, JVM, Java Virtual Machine, Java resources, SUN, CGI, Perl, database, network, html, xml, dhtml, rating, ratings, review, jars, cgi, programming, software review, software rating"
name=Keywords>
<STYLE>.news {
BACKGROUND: #007cd3; FONT-FAMILY: "宋体"; FONT-SIZE: 9pt
}
.t {
FONT-FAMILY: "宋体"; FONT-SIZE: 9pt
}
.t1 {
COLOR: #007cd3; FONT-FAMILY: "宋体"; FONT-SIZE: 9pt
}
.white {
COLOR: #ffffff; FONT-FAMILY: "宋体"; FONT-SIZE: 9pt
}
.red {
COLOR: #ff0000; FONT-FAMILY: "宋体"; FONT-SIZE: 9pt
}
A {
TEXT-DECORATION: underline
}
A:visited {
COLOR: #0000ff
}
A:hover {
COLOR: #ff6666; TEXT-DECORATION: none
}
.text {
FONT-FAMILY: "宋体"; FONT-SIZE: 12px; LINE-HEIGHT: 160%
}
.text1 {
COLOR: #000000; FONT-FAMILY: "宋体"; FONT-SIZE: 12px; LINE-HEIGHT: 130%; TEXT-DECORATION: none
}
.text1:visited {
COLOR: #000000
}
.text1:hover {
COLOR: #000000
}
.text2 {
COLOR: #000000; FONT-FAMILY: "宋体"; FONT-SIZE: 12px; LINE-HEIGHT: 130%; TEXT-DECORATION: none
}
.text2:visited {
COLOR: #000000
}
.text2:hover {
COLOR: #000000
}
.text3 {
FONT-FAMILY: "宋体"; FONT-SIZE: 12px; LINE-HEIGHT: 100%; TEXT-DECORATION: none
}
.large {
FONT-SIZE: 14px; LINE-HEIGHT: 130%
}
</STYLE>
<SCRIPT language=JavaScript> var adscount = 0; function cancelshift(){ promptstatus(); if(window.event.shiftKey){ addFavor(); window.event.returnValue = false; } } function promptstatus(){ window.status='欢迎光临【Java开发者】http://www.ChinaJavaWorld.com'; } function addFavor(){ window.external.addFavorite('http://www.ChinaJavaWorld.com','【Java开发者www.ChinaJavaWorld.com】'); } function secueclick(){ promptstatus(); if (event.button==2||event.button==3){ addFavor(); } } function helpme(){ cancelshift(); if (adscount++<1){ alert('请点击广告。谢谢您支持本网站继续发展!'); window.event.returnValue = false; } else{ adscount = 0; } }</SCRIPT>
<META content="MSHTML 5.00.3700.6699" name=GENERATOR></HEAD>
<BODY onmousemove=promptstatus();>
<CENTER><!--start head -->
<SCRIPT src="yyrm9.files/head1.js"></SCRIPT>
<SCRIPT src="yyrm9.files/ads.js"></SCRIPT>
<SCRIPT src="yyrm9.files/head2.js"></SCRIPT>
<!--end head --><!--start first table -->
<TABLE border=0 width="80%">
<TBODY>
<TR>
<TD vAlign=top width="100%">
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD class=white width="100%"></TD>
<TR></TR></TBODY></TABLE>
<TABLE border=1 cellPadding=1 cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD bgColor=#f0f0f0 borderColor=#ffffff class=t1 noWrap
width="50%"><IMG height=12 src="yyrm9.files/yellow_dot.gif"
width=12>Java语言入门(9) </TD>
<TD bgColor=#f0f0f0 borderColor=#ffffff class=t1 noWrap
width="50%"><IMG height=12 src="yyrm9.files/blue_dot.gif"
width=12>作者:袁小春 </TD>
<TR>
<TR>
<TD bgColor=#f0f0f0 borderColor=#ffffff class=t colSpan=2
width="100%">
<H1 align=center>第 九 章 Java输 入 输 出 操 作 </H1>
<H2 align=center>9.1 Java 输 入 输 出 流 </H2>
<P>所 有 的 程 序 语 言 都 提 ?copy; 与 本 机 文 件 系 统 交 互 的 方式;Java也 不 例 外。 我 们
将 看 看Java是 怎 样 处 理 标 准 文 件 输 入输 出 的(包 括stdin,stout,stderr)。 当 你 在 网
络 上 开 发 小 程 序 时,你 必 须 注 意 直 接 文 件 输 入 输 出 是 不 安 全 因 素 的 关 键。 大多 数 用
户 设 置 他 们 的 浏 览 器, 可 让 你 自 由 的 访 问 他 们 的文 件 系 统, 但 有 ?copy; 不 让 你 访
问。 当 然, 如 果 你 开 发 你内 部 的 应 用 程 序, 你 也 许 需 要 直 接 访 问 文 件。 </P>
<P>标 准 输 入 输 出 Unix的 用 户, 或 其 他 基 于 命 令 行 系 统 的 用户(如DOS), 都 知 道 标 准
输 入 输 出 的 含 义。 标 准 输 入 文 件 是键 盘, 标 准 输 出 文 件 是 你 的 终 端 屏 幕。 标 准 错 误
输 出 文 件也 指 向 屏 幕, 如 果 有 必 要, 它 也 可 以 指 向 另 一 个 文 件 以 便和 正 常 输 出 区 分。
</P>
<P>系 统 类 Java通 过 系 统 类 达 到 访 问 标 准 输 入 输 出 的 功 能。上 面 提 到 的 三 个 文 件 在
这 个 系 统 类 中 实 现: Stdin System.in作为InputStream类 的 一 个 实 例 来 实 现stdin,
你 可 以 使 用read()和skip(long n)两 个 成 员 函 数。read()让 你 从 输 入 中 读 一 个 字
节,skip(long n)让 你 在 输 入 中 跳 过n个 字 节。 </P>
<P>Stout System.out作 为PrintStream来 实 现stdout, 你 可 以 使
用print()和println()两个 成 员 函 数。 这 两 个 函 数 支 持Java的 任 意 基 本 类 型 作 为 参数。
</P>
<P>Stderr System.err同stdout一 样 实 现stderr。 象System.out一 样,你 可 以 访
问PrintStream 成 员 函 数。 </P>
<H2 align=center>9.2 标 准 输 入 输 出 例 子 </H2>
<P>这 里 有 一 个 例 子, 功 能 象Unix里 的cat或type: </P>
<P>import java.io.* class myCat{ public void main(String args[])
throws IOException{ int b; int count = 0; while ((b =
System.in.read()) != -1){ count++; System.out.print((char)b); }
System.out.println(); //blank line
System.err.println("counted"+count+"total bytes."); } } </P>
<H2 align=center>9.3 普 通 输 入 输 出 类 </H2>
<P>除 了 基 本 的 键 盘 输 入 和 屏 幕 输 出 外, 我 们 还 需 要 联 系文 件 的 输 入 输 出。 我 们 将
学 习 下 面 几 个 类: l FileInputStream l DataInputStream l
FileOutputStream l DataOutputStream </P>
<P>作 为 参 考, 再 列 出 一 ?copy; 特 定 应 用 的 类: l PipedInputStream l
BufferedInputStream l PushBackInputStream l StreamTokenizer l
PipedOutputStream l BufferedOutputStream l RandomAccessFile </P>
<P>我 们 不 在 此 讨 论 这 ?copy; 类, 但 你 可 以 在JAVA_HOME/src/java/io目录 里 查 看
每 个 类 的 成 员 函 数 定 义。 </P>
<H2 align=center>9.4 文 件 </H2>
<P>在 我 们 进 行 文 件 操 作 时, 需 要 知 道 一 ?copy; 关 于 文 件 的信 息。File类 提 ?copy;
了 一 ?copy; 成 员 函 数 来 操 纵 文 件 和 获得 一 ?copy; 文 件 的 信 息。 </P>
<H3 align=center>9.4.1 创 建 一 个 新 的 文 件 对 象 </H3>
<P>你 可 用 下 面 三 个 方 法 来 创 建 一 个 新 文 件 对 象: </P>
<P>File myFile; myFile = new File("etc/motd"); </P>
<P>或 </P>
<P>myFile = new File("/etc","motd"); //more useful if the directory
or filename are variables </P>
<P>或 </P>
<P>File myDir = new file("/etc"); myFile = new File(myDir,"motd");
</P>
<P>这 三 种 方 法 取 决 于 你 访 问 文 件 的 方 式。 例 如, 如 果 你 在应 用 程 序 里 只 用 一 个 文
件, 第 一 种 创 建 文 件 的 结 构 是 最容 易 的。 但 如 果 你 在 同 一 目 录 里 打 开 数 个 文 件, 则
第 二 种或 第 三 种 结 构 更 好 一 ?copy;。 </P>
<H3 align=center>9.4.2 文 件 测 试 和 使 用 </H3>
<P>一 ?copy; 你 创 建 了 一 个 文 件 对 象, 你 便 可 以 使 用 以 下 成员 函 数 来 获 得 文 件 相
关 信 息: </P>
<P>文 件 名 l String getName() l String getPath() l String
getAbslutePath() l String getParent() l boolean renameTo(File
newName) </P>
<P>文 件 测 试 l boolean exists() l boolean canWrite() l boolean
canRead() l boolean isFile() l boolean isDirectory() l boolean
isAbsolute() </P>
<P>一 般 文 件 信 息 l long lastModified() l long length() </P>
<P>目 录 用 法 l boolean mkdir() l String[] list() </P>
<H3 align=center>9.4.3 文 件 信 息 获 取 例 子 程 序</H3>
<P>这 里 是 一 个 独 立 的 显 示 文 件 的 基 本 信 息 的 程 序, 文 件通 过 命 令 行 参 数 传 输:
</P>
<P>import java.io.*; class fileInfo{ File fileToCheck; public static
void main(String args[]) throws IOException{ if (args.length>0){
for (int i=0;i<args.length;i++){ fileToCheck = new File(args[i]);
info(fileToCheck); } } else{ System.out.println("No file given."); }
} public void info (File f) throws IOException {
System.out.println("Name: "+f.getName()); System.out.println("Path:
"=f.getPath()); if (f.exists()) { System.out.println("File
exists."); System.out.print((f.canRead() ?" and is Readable":""));
System.out.print((f.cnaWrite()?" and is Writeable":""));
System.out.println("."); System.out.println("File is " + f.lenght()
= " bytes."); } else { System.out.println("File does not exist."); }
} } </P>
<H2 align=center>9.5 输 入 流</H2>
<P>InputStream SequenceInputStream FileInputStream PipedInputStream
ByteArrayInputStream FileterInputStream StringBufferInputStream </P>
<P>DataInputStream LineNumberInputStream PushbackInputStream
BufferedInputStream 有 好 几 个 类 是 专 门 用 来 处 理 文 件 输 入 的。 下 面 是 文 件 输入
类 的 层 次 结 构: </P>
<H3 align=center>9.5.1 FileInputStream 对 象 </H3>
<P>FileInputStream典 型 地 表 示 一 种 顺 序 访 问 的 文 本 文 件。 通过 使
用FileInputStream你 可 以 访 问 文 件 的 一 个 字 节、 几 个 字 节或 整 个 文 件。 </P>
<H3 align=center>9.5.2 打 开FileInputStream </H3>
<P>为 一 个 文 件 打 开 输 入 流FileInputStream, 你 必 须 将 文 件 名或 文 件 对 象 传 送 给
结 构: </P>
<P>FileInput Stream myFileStream; myFileStream = new FileInputStream
( "/etc/motd"); </P>
<P>你 还 可 以 象 下 边 这 样 从FileInputStream里 读 文 件 信 息: </P>
<P>File myFile ; FileInputSteam myFileStream; myFile = new
File("/etc/motd"); myFileStream = new FileInputStream(myFile); </P>
<P>一 ?copy;FileInputStream输 入 流 打 开, 你 就 可 以 从 里 面 读 取信 息 了。read()成
员 函 数 有 以 下 几 种 选 项: </P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -