sdut-Java面向对象-11 输入输出(主观题)
利用字节输入输出流类,完成如下任务:(1)从键盘上获取数据(直到一行数据"end"为读取结束),将数据写出到文件d:\data.dat中。(2)读出文件d:\data.dat里面的内容,将其显示在屏幕上。可以使用不种的字节流读写数据。说明:主类类名为Main。
8-1 sdut-IO-2 利用字节输入输出流类,写出数据并读取文件
利用字节输入输出流类,完成如下任务:
(1)从键盘上获取数据(直到一行数据"end"为读取结束),将数据写出到文件d:\data.dat中。
(2)读出文件d:\data.dat里面的内容,将其显示在屏幕上。
可以使用不种的字节流读写数据。
说明:主类类名为Main。
提示:可用如下字节输入/输出流FileInputStream和FileOutputStream、BufferedInputStream和BufferedOutputStream、DataInputStream和DataOutputStream、RandomAccessFile。
实现代码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String\[\] args) throws IOException {
Scanner reader=new Scanner(System.in); //准备从键盘读取数据
String line = reader.nextLine();//读取一行
FileOutputStream fos=new FileOutputStream("d:\\\\data.dat"); //创建文件输出流
//若读取到的一行字符串不为“end",写文件
while(!line.equals("end"))
{
fos.write((line).getBytes()); //写文件
line=reader.nextLine(); //从键盘再读一行字符
}
fos.close(); //输出流关闭
StringBuffer buf=new StringBuffer(); //创建字符串缓冲区
FileInputStream fis=new FileInputStream("d:\\\\data.dat"); //创建文件输出流
byte\[\] bytes=new byte\[10\];
int len=fis.read(bytes); //第一次读文件
//若文件尚未读取结束,则边读边显示数据
while(len!=-1)
{
String str=new String(bytes,0,len); //由字节数组构造字符串,便于观察
buf.append(str); //追加到缓冲区,待文件读取完,再显示
len=fis.read(bytes); //再读一次文件
}
fis.close(); //文件输入流关闭
System.out.println(buf); //显示读取的数据
}
}
8-2 sdut-IO-3 利用字符输入输出流类,写出数据并读取文件
利用字符输入输出流类,完成如下任务:
(1)从键盘上获取数据(直到一行数据"end"为读取结束),将数据写出到文件d:\data.txt中。
(2)读出文件d:\data.txt里面的内容,将其显示在屏幕上。
说明:主类类名为:Main。
捍示:可用如下字符输入/输出流 FileReader和FileWriter、BufferedReader 和 BufferedWriter。
实现代码:
import java.io.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
Scanner reader=new Scanner(System.in); //准备从键盘读取数据
String line = reader.nextLine();//读取一行
FileWriter fw=new FileWriter("d:\\data.dat"); //创建文件输出流
//若读取到的一行字符串不为“end",写文件
while(!line.equals("end"))
{
fw.write(line); //写文件
line=reader.nextLine(); //从键盘再读一行字符
}
fw.close(); //输出流关闭
StringBuffer buf=new StringBuffer(); //创建字符串缓冲区
FileReader fr=new FileReader("d:\\data.dat"); //创建文件输出流
char[] chars=new char[10];
int len=fr.read(chars); //第一次读文件
//若文件尚未读取结束,则边读边显示数据
while(len!=-1)
{
String str=new String(chars,0,len); //由字节数组构造字符串,便于观察
buf.append(str);
len=fr.read(chars); //再读一次文件
}
fr.close(); //文件输入流关闭
System.out.println(buf);
}
}
8-3 sdut-IO-5 读取网络资源,写出代码至文件。
读取网络资源,写出代码至文件。
读取“http://www.sdut.edu.cn“网页内容,存至“d:\sdut.html”。
提示语句:
URL url=new URL("https://www.sdut.edu.cn/");
InputStream is = url.openStream();
实现代码:
import java.*;
import java.io.FileOutputStream;
import java.io.IOException;import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
public class Main {
public static void main(String[] args) throws IOException {
URL u=new URL("https://www.sdut.edu.cn/");
InputStream is=u.openStream();
OutputStream os=new FileOutputStream("d:/sdut.html");
byte byes[]=new byte[10];
int len=0;
while((len=is.read(byes))!=-1)
{
os.write(byes, 0, len);
}
}
}
8-4 sdut-IO-1 使用Scanner类解析文件。
使用Scanner类解析文件。
(1)准备文件d:\test.txt内容,内含字符、数字等文本信息;
(2)使用Scanner类读取里面的字符信息和数字信息分别输出。
实现代码:
import java.io.*;
import java.io.FileNotFoundException;
import java.util.*;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
File file=new File("d:/test.txt");
Scanner reader=new Scanner(file); //Scanner类的构造方法,从指定文件扫描
String str;
StringBuffer buf1=new StringBuffer(); //存放数字
StringBuffer buf2=new StringBuffer(); //存放其他
while(reader.hasNext())
{
str=reader.nextLine();
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)>='0'&&str.charAt(i)<='9')
{
buf1.append(str.charAt(i));
}
else
{
buf2.append(str.charAt(i));
}
}
}
System.out.println(buf2); //输出字符
System.out.println(buf1); //输出数字
}
}
8-5 sdut-IO-4 利用对象输入/输出流进行文件的读写
利用对象输入/输出流进行文件的读写。
(1)创建类Student,内含学号、姓名、年龄、班级等属性,重写父类的toString()方法,用于输出学生的信息;
(2)建立测试类,建立Student类的对象数组stuArray,里面放置若干个学生对象,将数组中的数据依次写入文件stu.dat;然后读取该文件中的信息,依次还原出数组中各Student对象的信息。
实现代码:
String id;
String name;
int age;
String clas;
public Student(String id, String name, int age, String clas) {
super();
this.id = id;
this.name = name;
this.age = age;
this.clas = clas;
}
public String toString() {
return "id:"+id+"\\tname:"+name+"\\tage:"+age+"\\tclass:"+clas;
}
8-6 sdut-IO-6 利用DataInputStream和DataOutputStream读写文件
利用DataInputStream和DataOutputStream读写文件。
将数字1-100、字母A-Z、a—z写出至文件D:\abc.txt中,然后读取出来,显示在屏幕上。
实现代码:
import java.io.*;public class Main {
public static void main(String[] args) throws IOException, ClassNotFoundException {
DataOutputStream dos=new DataOutputStream(new FileOutputStream("D:/abc.txt"));
for(int i=1;i<=100;i++)
{
dos.writeInt(i);
}
for(int i='A';i<='Z';i++)
{
dos.writeChar(i);
}
for(int i='a';i<='z';i++)
{
dos.writeChar(i);
}
dos.close();
DataInputStream dis=new DataInputStream(new FileInputStream("D:/abc.txt"));
for(int i=1;i<=100;i++)
{
System.out.print(dis.readInt()+" ");
}
System.out.println();
for(int i=0;i<26;i++)
{
System.out.print(dis.readChar()+" ");
}
System.out.println();
for(int i=0;i<26;i++)
{
System.out.print(dis.readChar()+" ");
}
dis.close();
System.out.println();
}
}
8-7 sdut-IO-7 利用File类进行文件及文件夹名称的显示
利用File类进行文件及文件夹名称的显示。
编写应用程序,列出指定目录(d:/test)下的所有文件和目录名,然后将该目录下的所有文件后缀名为.txt的文件过滤出来显示在屏幕上。
实现代码:
import java.io.*;public class Main {
public static void main(String[] args) throws IOException, ClassNotFoundException {
File file=new File("d:/test");
File[] l = file.listFiles();
if(l==null)
{
System.out.println("不存在");
}
else
{
for(int i=0;i<l.length;i++)
System.out.println(l[i]);
System.out.println("------所有文本文件如下------");
String[] l2 = file.list();
for(int i=0;i<l2.length;i++)
{
if(l2[i].endsWith(".txt"))
System.out.println(l2[i]);
}
}
}
}
8-8 sdut-IO-8 使用File类创建一个多层目录d:\java\ch10\src
使用File类创建一个多层目录d:\myjava\ch07\src。
实现代码:
import java.io.*;public class Main {
public static void main(String[] args) throws IOException, ClassNotFoundException {
File file=new File("d:\\java\\ch07\\src");
if(!file.exists())
{
file.mkdirs();
}
}
}’
8-9 sdut-IO-9 使用File类列出目录下修改日期晚于2022-01-01的目录和文件名称
使用File类列出d:\test目录下修改日期晚于2022-01-01的文件或者目录的名称。
实现代码:
public static void main(String[] args) throws IOException, ParseException
{
File file = new File("d:\\");
File[] l = file.listFiles();
if (l != null) {
String dateStr = "2022-01-01 00:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:s
s");
Date date1=sdf.parse(dateStr);
for (int i = 0; i < l.length; i++) {
long ss = l[i].lastModified();
Date date2 = new Date(ss);
if(date2.after(date1))
{
System.out.println(l[i]);
}
}
}
}更多推荐

所有评论(0)