日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实验五 输入输出练习_JAVA

發布時間:2025/3/21 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实验五 输入输出练习_JAVA 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗內容
1、使用Scanner類解析文件。
(1)準備文件test.txt內容,內含字符、數字等文本信息;
(2)使用Scanner類讀取里面的字符信息和數字信息分別輸出。

package cn.sdut.cs; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner;public class Main {public static void main(String[] args) throws FileNotFoundException {File file = new File("e:/java/test.txt");Scanner reader = new Scanner(file);StringBuffer sbf1 = new StringBuffer();StringBuffer sbf2 = new StringBuffer();String str;while(reader.hasNext()) {str = reader.nextLine();for(int i = 0; i < str.length(); i++) {if(str.charAt(i) >= '0' && str.charAt(i) <= '9') {sbf1.append(str.charAt(i));} else {sbf2.append(str.charAt(i));}}}System.out.println("文件內的數字信息有:" + sbf1);System.out.println("文件內的字符信息有:" + sbf2);reader.close();}}

文件內的數字信息有:1111111000002222
文件內的字符信息有:耶斯莫拉粗梅不雞丟ysmlguolaoshi

2、利用對象輸入/輸出流進行文件的讀寫。
根據要求編寫程序:
(1)創建類Student,內含學號、姓名、年齡、班級等屬性,重寫父類的toString()方法,用于輸出學生的信息;
(2)建立測試類,建立Student類的對象數組stuArray,里面放置若干個學生對象,將數組中的數據依次寫入文件stu.dat;然后讀取該文件中的信息,依次還原出數組中各Student對象的信息。

package cn.sdut.cs;import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable;class Student implements Serializable {// 對象需要被寫出到文件上,那么對象所屬的類必須要實現Serializable接口String id, name;int age;char sex;String cla;public Student(String id, String name, int age, char sex, String cla) {super();this.id = id;this.name = name;this.age = age;this.sex = sex;this.cla = cla;}@Overridepublic String toString() {return "id:" + id + "\tname:" + name + "\tage:" + age + "\tsex:" + sex + "\tcla:" + cla;} }public class Main {public static void main(String[] args) throws IOException, ClassNotFoundException {Student stu1 = new Student("110506001", "郭泫雅", 20, 'w', "rj01");Student stu2 = new Student("110506002", "章魚妹", 18, 'w', "rj01");Student stu3 = new Student("110506003", "哦雅思", 18, 'm', "rj01");Student[] stuArray = new Student[] { stu1, stu2, stu3 };// 創建學生對象數組ObjectOutputStream obos = new ObjectOutputStream(new FileOutputStream("stu.dat"));// 輸出流寫進stu.dat文件里ObjectInputStream obis = new ObjectInputStream(new FileInputStream("stu.dat"));//輸入流從stu.dat文件中讀出obos.writeObject(stuArray);//將stuArray寫入 ObjectOutputStreamObject object = obis.readObject();//從 ObjectInputStream 讀取對象.反序列化if(object instanceof Student[]) {//判斷object是否是后面的類,或者其子類、實現類的實例Student [] stus = (Student[]) object;for(Student i : stus) {//foreachSystem.out.println(i);}}obos.close();obis.close();}}

輸出:
id:110506001 name:郭泫雅 age:20 sex:w cla:rj01
id:110506002 name:章魚妹 age:18 sex:w cla:rj01
id:110506003 name:哦雅思 age:18 sex:m cla:rj01

3、用打開文本對話框選取文件,讀寫文件內容。
用打開文本對話框選取文件,讀取文件內容,在顯示器中顯示出來,進行小寫字母轉換成大寫字母,然后用保存文本對話框選取目標文件,向目標文件里面追加寫入處理后的字符。

package cn.sdut.cs;import java.io.*; import javax.swing.JFileChooser;public class Main {public static void main(String[] args) throws IOException {StringBuffer sbf = new StringBuffer();JFileChooser chooser = new JFileChooser();if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){File file = chooser.getSelectedFile();BufferedReader br = new BufferedReader(new FileReader(file));String line;while ((line = br.readLine()) != null){line = line.toUpperCase();sbf.append(line);}System.out.println(sbf);br.close();}if (chooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION){File file = chooser.getSelectedFile();BufferedWriter bw = new BufferedWriter(new FileWriter(file));bw.write(sbf.toString());bw.flush();bw.close();}} }

4、讀取網絡資源,寫出代碼至文件。
讀取"http://www.sdut.edu.cn"網頁內容,存至"sdut.html"。
提示語句:

URL url=new URL("http://www.sdut.edu.cn"); InputStream is = url.openStream();package cn.sdut.cs;import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Arrays;public class Main {@SuppressWarnings("resource")public static void main(String[] args) throws IOException {URL url = new URL("http://www.sdut.edu.cn");InputStream is = url.openStream();// 輸入流,用來讀取OutputStream os = new FileOutputStream("e:/sdut.html");// 輸出流byte[] bytes = new byte[20];int len;while ((len = is.read(bytes)) != -1) {System.out.println(Arrays.toString(bytes));os.write(bytes, 0, len);}}}

5、利用各種輸入輸出流進行讀寫文件,分析其讀寫效率。
讀出文件D:\test1.txt的內容,顯示在屏幕的同時,將文件寫至D:\test2.txt中,計算其執行的時間,從而分析執行的效率。
提示,可用如下的輸入/輸入流類:
字節輸入/輸出流:FileInputStream和FileOutputStream、BufferedInputStream和BufferedOutputStream、DataInputStream和DataOutputStream;

package cn.sdut.cs;import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Reader; import java.io.Writer;public class Main {public static void main(String[] args) throws IOException {//FileReader和FileWriterReader ir = new FileReader("d:/test1.txt");//字符輸入流Writer wr = new FileWriter("d:/test2.txt");//字符輸出流long t1 = System.currentTimeMillis();char[] chars = new char[10];//緩沖區int len1 = 0;while((len1 = ir.read(chars)) != -1) {wr.write(chars, 0, len1);System.out.println(new String(chars, 0, len1));}ir.close();wr.close();long t2 = System.currentTimeMillis();System.out.println(t2 - t1);//BufferedReader 和 BufferedWriterInputStream is = new FileInputStream("d:/test1.txt");OutputStream os = new FileOutputStream("d:/test2.txt");BufferedInputStream bis = new BufferedInputStream(is);BufferedOutputStream bos = new BufferedOutputStream(os);long t3 = System.currentTimeMillis();byte[] bytes = new byte[10];int len2 = 0;while((len2 = bis.read(bytes))!=-1){bos.write(bytes, 0, len2);System.out.println(new String(bytes, 0, len2));}bis.close();bos.close();is.close();os.close();long t4 = System.currentTimeMillis();System.out.println(t4-t3);} }

6、利用DataInputStream和DataOutputStream讀寫文件。
將數字1-100、字母A-Z、a—z寫出至文件D:\abc.txt中,然后讀取出來,顯示在屏幕上。

package cn.sdut.cs;import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;public class Main {public static void main(String[] args) throws IOException {FileOutputStream fou = new FileOutputStream("D:/abc.txt");DataOutputStream dO = new DataOutputStream(fou);FileInputStream fiu = new FileInputStream("D:/abc.txt");DataInputStream dI = new DataInputStream(fiu);// 寫進文件for (int i = 1; i <= 100; i++) {// 1-100dO.writeInt(i);}for (int i = 65; i <= 90; i++) {// A-ZdO.writeChar(i);}for (int i = 97; i <= 122; i++) {// a-zdO.writeChar(i);}dO.close();// 讀取輸入流顯示在屏幕上for (int i = 1; i <= 100; i++) {if (i != 100)System.out.print(dI.readInt() + " ");elseSystem.out.println(dI.readInt());}for (int i = 65; i <= 90; i++) {if (i != 90)System.out.print(dI.readChar());elseSystem.out.println(dI.readChar());}for (int i = 97; i < 122; i++) {if (i != 122)System.out.print(dI.readChar());elseSystem.out.println(dI.readChar());}dI.close();} }

7、利用File類進行文件及文件夾名稱的顯示。
編寫應用程序,列出指定目錄(d:/test)下的所有文件和目錄名,然后將該目錄下的所有文件后綴名為.txt的文件過濾出來顯示在屏幕上。

package cn.sdut.cs;import java.io.File; import java.io.FilenameFilter; import java.util.Scanner;public class Main {//列出一個目錄及子目錄下的所有文件和名稱public static void listSubDirectory(File dir) {if (dir.isDirectory()) {// 判斷該對象是否是目錄File[] listFiles = dir.listFiles();if (listFiles != null) {for (File file : listFiles) {if (file.isFile()) {System.out.println(file);} else {listSubDirectory(file);// 是目錄的話遞遞歸調用}}}} else {System.out.println(dir + "不是目錄!");}}public static void listtxt(File file) {String[] listfilenames = file.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {if (name.endsWith(".txt"))return true;return false;}});for (String filename : listfilenames) {System.out.println(filename);}}public static void main(String[] args) {Scanner reader = new Scanner(System.in);File file1 = new File("d:/test");Main.listSubDirectory(file1);File file2 = new File("d:/test");Main.listtxt(file2);reader.close();} }

8、使用File類創建一個多層目錄d:\java\ch10\src。

package cn.sdut.cs;import java.io.File;public class Main {public static void main(String[] args) {File file = new File("d:/java/ch10/src");if(!file.exists()) {file.mkdirs();//直接創建多層目錄} else {file.delete();}} }

9、使用File類列出某一個目錄下創建日期晚于2017-08-10的文件。

package cn.sdut.cs;import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner reader = new Scanner(System.in);String s = reader.nextLine();//輸入目錄File file = new File(s);File[] list = file.listFiles();//此目錄下的所有文件String day = "2017-08-10 00:00:00";for(int i = 0; i < list.length; i++) {long st = list[i].lastModified();//文件最后修改時間SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = new Date(Long.parseLong(String.valueOf(st)));String day2 = sdf.format(date);if(day2.compareTo(day) > 0) {//符合時間晚于的就輸出System.out.println(list[i] + " " + day2);}}reader.close();} }

10、利用File類編程完成如下任務:
(1)列出一個目錄下的所有文件和目錄名稱;
(2)列出一個目錄及子目錄下的所有文件名稱;
(3)列舉一個目錄下的所有.java文件名稱;
(4)列舉一個目錄及其子目錄下的所有.java文件名稱。

package cn.sdut.cs;import java.io.File; import java.io.FilenameFilter;public class Main {// 1.列出一個目錄下的所有文件和目錄名稱public static void listDirectory(File dir) {if (dir.isDirectory()) {// 判斷該對象是否是目錄String[] filenames = dir.list();if (filenames != null) {for (String filename : filenames) {System.out.println(filename);}}} else {System.out.println(dir + "不是目錄!");}}// 2列出一個目錄及子目錄下的所有文件和名稱public static void listSubDirectory(File dir) {if (dir.isDirectory()) {// 判斷該對象是否是目錄File[] listFiles = dir.listFiles();if (listFiles != null) {for (File file : listFiles) {if (file.isFile()) {System.out.println(file);} else {listSubDirectory(file);// 是目錄的話遞遞歸調用}}}} else {System.out.println(dir + "不是目錄!");}}// 3列舉一個目錄下的所有.java文件名稱public static void listFilter(File dir, String filter) {if (dir.isDirectory()) {// 判斷該對象是否是目錄String[] filenames = dir.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {if (name.endsWith(filter)) {return true;} else {return false;}}});if (filenames != null) {for (String filename : filenames) {System.out.println(filename);}}} else {System.out.println(dir + "不是目錄!");}}// 4列舉一個目錄及其子目錄下的所有.java文件名稱public static void listSubFilter(File dir, String filter) {if (dir.isDirectory()) {// 判斷該對象是否是目錄File[] listFiles = dir.listFiles();if (listFiles != null) {for (File file : listFiles) {if (file.isFile()) {if (file.getName().endsWith(filter)) {System.out.println(file);}} else {listSubFilter(file, filter);// 是目錄的話遞遞歸調用}}}} else {System.out.println(dir + "不是目錄!");}}public static void main(String[] args) {Main.listDirectory(new File("e:/java"));System.out.println("------------------");Main.listSubDirectory(new File("e:/"));System.out.println("------------------");Main.listFilter(new File("./src"), ".java");System.out.println("------------------");Main.listSubFilter(new File("./src"), ".java");} } 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的实验五 输入输出练习_JAVA的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。