生活随笔
收集整理的這篇文章主要介紹了
实验五 输入输出练习_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 { 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
; } @Override public 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" ) ) ; ObjectInputStream obis
= new ObjectInputStream ( new FileInputStream ( "stu.dat" ) ) ; obos
. writeObject ( stuArray
) ; Object object
= obis
. readObject ( ) ; if ( object
instanceof Student [ ] ) { Student
[ ] stus
= ( Student
[ ] ) object
; for ( Student i
: stus
) { System
. 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
{ Reader 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
) ; InputStream 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
++ ) { dO
. writeInt ( i
) ; } for ( int i
= 65 ; i
<= 90 ; i
++ ) { dO
. writeChar ( i
) ; } for ( int i
= 97 ; i
<= 122 ; i
++ ) { dO
. writeChar ( i
) ; } dO
. close ( ) ; for ( int i
= 1 ; i
<= 100 ; i
++ ) { if ( i
!= 100 ) System
. out
. print ( dI
. readInt ( ) + " " ) ; else System
. out
. println ( dI
. readInt ( ) ) ; } for ( int i
= 65 ; i
<= 90 ; i
++ ) { if ( i
!= 90 ) System
. out
. print ( dI
. readChar ( ) ) ; else System
. out
. println ( dI
. readChar ( ) ) ; } for ( int i
= 97 ; i
< 122 ; i
++ ) { if ( i
!= 122 ) System
. out
. print ( dI
. readChar ( ) ) ; else System
. 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 ( ) { @Override public 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 { 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
+ "不是目錄!" ) ; } } 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 listFilter ( File dir
, String filter
) { if ( dir
. isDirectory ( ) ) { String
[ ] filenames
= dir
. list ( new FilenameFilter ( ) { @Override public 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
+ "不是目錄!" ) ; } } 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 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。