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]);
                }
            }
        }
    }
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐