第七章 文件与数据流 (2)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
freopen("test.txt","w",stdout);
for(int i=0; i<=10000; i++) {
for(int j=0; j<=100; j++) printf("%d ",j);
printf("\n"); } return 0; }
(2)分别用不带缓存和带缓存的流读取该文件 test.txt,计算其所用时间。 import java.io.*;
例题 8:随机访问文件实例
准备工作: (1)先看 RandomAccessFile 类的构造方法 (2)查阅 RandomAccessFile 类的 seek 方法 (3)查阅 RandomAccessFile 类的各种 read*()方法,其中*代表某种数据类型。
import java.io.*;
6
while((ch = f.read())!=-1)i++; f.close(); long end = System.currentTimeMillis(); System.out.println("Total Bytes: "+i); System.out.println("Time used without buffer: "+ (end-start) + "ms");
例 5:PrintStream 实例
本实例同时在控制台窗口和文件 99cfb.txt 中打印九九乘法表。
3
import java.io.*; class J_PrintStream {
public static void main(String[] args) throws Exception {
例 2:FileInputStream 实例
从文件 test.txt 中读入数据。
import java.io.*;
1
class J_EchoFile {
public static void mb_echo(InputStream in) throws Exception {
while(true) {
PrintStream ps = new PrintStream("99cfb.txt"); for(int i=1;i<=9;i++) {
for(int j=1;j<=9;j++) {
ps.printf("%3d",i*j); //每个数据占3个位宽 System.out.printf("%3d",i*j); //每个数据占3个位宽 } System.out.println(); //控制台换行 ps.println(); //文件中换行 } ps.close(); } } 程序运行后,打开文件 99cfb.txt 查看:
start = System.currentTimeMillis(); f = new FileInputStream("test.txt"); BufferedInputStream fb = new BufferedInputStream(f); i=0; while((ch = fb.read())!=-1)i++; fb.close(); end = System.currentTimeMillis(); System.out.println("Total Bytes: "+i); System.out.println("Time used with buffer: "+ (end-start) + "ms"); } } 运行该程序,得到时间: Total Bytes: 2960296 Time used without buffer: 3500ms Total Bytes: 2960296 Time used with buffer: 68ms
FileReader 和 FileWriter 实例
import java.io.*;
public class J_FileReaderWriter {
public static void main(String[] args) throws Exception {
FileWriter f_out = new FileWriter("test.txt"); f_out.write("有志者,事竟成"); f_out.close();
2
例 4:FileOutputStream 实例
本实例将数据写入到文件 out.txt 中。 import java.io.*; class J_WriteFile {
public static void mb_write(OutputStream out) throws Exception {
String s = "文件输出流例程"; byte[] b = s.getBytes(); //字符串转换为字节数组 out.write(b); out.flush(); System.out.println( ); } public static void main(String[] args) throws Exception { FileOutputStream f = new FileOutputStream("out.txt"); mb_write(f); f.close(); } } 程序运行后,打开文件 out.txt 查看其内容:
用十六进制程序打开 out.txt 文件,其内容如下:
5
例 题 7 : 带 缓 存 的 数 据 流 BufferedInputStream 和
BufferedOutputStream 实例
(1)首先产生测试数据,得到测试文件 test.txt。 #include<cstdio>
int main() {
第七章 文件与数据流
例 1:InputStream 实例
import java.io.*; class J_Echo {
public static void mb_echo(InputStream in) throws Exception {
while(true) {
int i = in.read(); if(i==-1) break; char ch = (char)i; System.out.print(ch); } System.out.println( ); } public static void main(String[] args) throws Exception { mb_echo(System.in); } }
int i = in.read(); if(i==-1) break; char ch = (char)i; System.out.print(ch); } System.out.println( ); } public static void main(String[] args) throws Exception { FileInputStream f = new FileInputStream("test.txt"); mb_echo(f); f.close(); } }
FileReader f_in = new FileReader("test.txt"); for(int c = f_in.read();c!=-1;c = f_in.read())
4
续上次
例 6:DataInputStream,DataOutputStream 实例
import java.io.*; public class J_Data {
public static void main(String[] args) throws Exception {
FileOutputStream fout = new FileOutputStream("out.txt"); DataOutputStream dfout = new DataOutputStream(fout); int i; for(i=0;i<4;i++) dfout.writeInt('0'+i); //字符 0 的编码为 48 dfout.close(); FileInputStream fin = new FileInputStream("out.txt"); DataInputStream dfin = new DataInputStream(fin); for(i=0;i<4;i++)System.out.println(dfin.readInt()+" "); dfin.close(); } } 运行该程序,得到 out.txt 文Baidu Nhomakorabea,用 Windows 的记事本程序打开,其内容如下:
8
例题 10:读写器实例
输入流与输出流
读写器
java.io.InputStream
java.io.Reader
java.io.OutputStream
java.io.Writer
java.io.FileInputStream
java.io.FileReader
java.io.FileOutputStream
public class J_RandomAccessFile {
public static void main(String[] args) throws Exception {
RandomAccessFile f = new RandomAccessFile("test.txt","rw"); int i; double d; for(i=0;i<10;i++)
例 3:OutputStream 实例
import java.io.*;
class J_Write {
public static void mb_write(OutputStream out) throws Exception {
String s = "输出流例程"; byte[] b = s.getBytes(); //字符串转换为字节数组 out.write(b); out.flush(); System.out.println( ); } public static void main(String[] args) throws Exception { mb_write(System.out); } }
例题 9:随机访问文件实例 2
已知 test.in 文件内容如下:
编写一个程序,将其内容读出并显示。
import java.io.*;
public class J_RandomAccessFile2 {
public static void main(String[] args) throws Exception {
f.writeDouble(Math.PI*i); f.seek(16); f.writeDouble(0);
7
f.seek(0); for(i=0;i<10;i++) {
d = f.readDouble(); System.out.println("[" + i + "]: " + d); } f.close(); } }
java.io.FileWriter
java.io.BufferedInputStream
java.io.BufferedReader
java.io.BufferedOutputStream java.io.BufferedWriter
java.io.PrintStream
java.io.PrintWriter
RandomAccessFile f = new RandomAccessFile("test.in","r"); int i; String s = null; while(true) {
s = f.readLine(); if(s == null) break; else System.out.println(s); } f.close(); } }
public class J_BufferedInputStream {
public static void main(String[] args) throws Exception {
long start = System.currentTimeMillis(); FileInputStream f = new FileInputStream("test.txt"); int i,ch; i=0;
for(int i=0; i<=10000; i++) {
for(int j=0; j<=100; j++) printf("%d ",j);
printf("\n"); } return 0; }
(2)分别用不带缓存和带缓存的流读取该文件 test.txt,计算其所用时间。 import java.io.*;
例题 8:随机访问文件实例
准备工作: (1)先看 RandomAccessFile 类的构造方法 (2)查阅 RandomAccessFile 类的 seek 方法 (3)查阅 RandomAccessFile 类的各种 read*()方法,其中*代表某种数据类型。
import java.io.*;
6
while((ch = f.read())!=-1)i++; f.close(); long end = System.currentTimeMillis(); System.out.println("Total Bytes: "+i); System.out.println("Time used without buffer: "+ (end-start) + "ms");
例 5:PrintStream 实例
本实例同时在控制台窗口和文件 99cfb.txt 中打印九九乘法表。
3
import java.io.*; class J_PrintStream {
public static void main(String[] args) throws Exception {
例 2:FileInputStream 实例
从文件 test.txt 中读入数据。
import java.io.*;
1
class J_EchoFile {
public static void mb_echo(InputStream in) throws Exception {
while(true) {
PrintStream ps = new PrintStream("99cfb.txt"); for(int i=1;i<=9;i++) {
for(int j=1;j<=9;j++) {
ps.printf("%3d",i*j); //每个数据占3个位宽 System.out.printf("%3d",i*j); //每个数据占3个位宽 } System.out.println(); //控制台换行 ps.println(); //文件中换行 } ps.close(); } } 程序运行后,打开文件 99cfb.txt 查看:
start = System.currentTimeMillis(); f = new FileInputStream("test.txt"); BufferedInputStream fb = new BufferedInputStream(f); i=0; while((ch = fb.read())!=-1)i++; fb.close(); end = System.currentTimeMillis(); System.out.println("Total Bytes: "+i); System.out.println("Time used with buffer: "+ (end-start) + "ms"); } } 运行该程序,得到时间: Total Bytes: 2960296 Time used without buffer: 3500ms Total Bytes: 2960296 Time used with buffer: 68ms
FileReader 和 FileWriter 实例
import java.io.*;
public class J_FileReaderWriter {
public static void main(String[] args) throws Exception {
FileWriter f_out = new FileWriter("test.txt"); f_out.write("有志者,事竟成"); f_out.close();
2
例 4:FileOutputStream 实例
本实例将数据写入到文件 out.txt 中。 import java.io.*; class J_WriteFile {
public static void mb_write(OutputStream out) throws Exception {
String s = "文件输出流例程"; byte[] b = s.getBytes(); //字符串转换为字节数组 out.write(b); out.flush(); System.out.println( ); } public static void main(String[] args) throws Exception { FileOutputStream f = new FileOutputStream("out.txt"); mb_write(f); f.close(); } } 程序运行后,打开文件 out.txt 查看其内容:
用十六进制程序打开 out.txt 文件,其内容如下:
5
例 题 7 : 带 缓 存 的 数 据 流 BufferedInputStream 和
BufferedOutputStream 实例
(1)首先产生测试数据,得到测试文件 test.txt。 #include<cstdio>
int main() {
第七章 文件与数据流
例 1:InputStream 实例
import java.io.*; class J_Echo {
public static void mb_echo(InputStream in) throws Exception {
while(true) {
int i = in.read(); if(i==-1) break; char ch = (char)i; System.out.print(ch); } System.out.println( ); } public static void main(String[] args) throws Exception { mb_echo(System.in); } }
int i = in.read(); if(i==-1) break; char ch = (char)i; System.out.print(ch); } System.out.println( ); } public static void main(String[] args) throws Exception { FileInputStream f = new FileInputStream("test.txt"); mb_echo(f); f.close(); } }
FileReader f_in = new FileReader("test.txt"); for(int c = f_in.read();c!=-1;c = f_in.read())
4
续上次
例 6:DataInputStream,DataOutputStream 实例
import java.io.*; public class J_Data {
public static void main(String[] args) throws Exception {
FileOutputStream fout = new FileOutputStream("out.txt"); DataOutputStream dfout = new DataOutputStream(fout); int i; for(i=0;i<4;i++) dfout.writeInt('0'+i); //字符 0 的编码为 48 dfout.close(); FileInputStream fin = new FileInputStream("out.txt"); DataInputStream dfin = new DataInputStream(fin); for(i=0;i<4;i++)System.out.println(dfin.readInt()+" "); dfin.close(); } } 运行该程序,得到 out.txt 文Baidu Nhomakorabea,用 Windows 的记事本程序打开,其内容如下:
8
例题 10:读写器实例
输入流与输出流
读写器
java.io.InputStream
java.io.Reader
java.io.OutputStream
java.io.Writer
java.io.FileInputStream
java.io.FileReader
java.io.FileOutputStream
public class J_RandomAccessFile {
public static void main(String[] args) throws Exception {
RandomAccessFile f = new RandomAccessFile("test.txt","rw"); int i; double d; for(i=0;i<10;i++)
例 3:OutputStream 实例
import java.io.*;
class J_Write {
public static void mb_write(OutputStream out) throws Exception {
String s = "输出流例程"; byte[] b = s.getBytes(); //字符串转换为字节数组 out.write(b); out.flush(); System.out.println( ); } public static void main(String[] args) throws Exception { mb_write(System.out); } }
例题 9:随机访问文件实例 2
已知 test.in 文件内容如下:
编写一个程序,将其内容读出并显示。
import java.io.*;
public class J_RandomAccessFile2 {
public static void main(String[] args) throws Exception {
f.writeDouble(Math.PI*i); f.seek(16); f.writeDouble(0);
7
f.seek(0); for(i=0;i<10;i++) {
d = f.readDouble(); System.out.println("[" + i + "]: " + d); } f.close(); } }
java.io.FileWriter
java.io.BufferedInputStream
java.io.BufferedReader
java.io.BufferedOutputStream java.io.BufferedWriter
java.io.PrintStream
java.io.PrintWriter
RandomAccessFile f = new RandomAccessFile("test.in","r"); int i; String s = null; while(true) {
s = f.readLine(); if(s == null) break; else System.out.println(s); } f.close(); } }
public class J_BufferedInputStream {
public static void main(String[] args) throws Exception {
long start = System.currentTimeMillis(); FileInputStream f = new FileInputStream("test.txt"); int i,ch; i=0;