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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaSE各阶段练习题----文件和IO

發布時間:2024/2/28 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaSE各阶段练习题----文件和IO 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、鍵盤錄入一個文件夾路徑,刪除該文件夾(包含文件夾內容)

import?java.io.File;

?

public?class?Test01_刪除該文件夾 {

?

public?static?void?main(String[] args) {

?

File file?= new?File("d:/IO文檔/xxx");

deleteFile(file);

?

}

?

public?static?void?deleteFile(File file) {

if?(file.exists()) {

//判斷如果文件存在則,遍歷目錄下的所有文件

File[] files?= file.listFiles();

for?(File f?: files) {

if?(f.isDirectory()) {//判斷時否為目錄

deleteFile(f);//遞歸調用

}else?{

System.out.println("刪除了文件:"?+ f.getName());

f.delete();

}

}

}

System.out.println("刪除了目錄:"?+ file.getName());//刪除文件后,刪除目錄

file.delete();

}

}

?

?

?

2、鍵盤錄入一個文件夾路徑,統計該文件夾下的各種后綴名的文件的個數

例如:.txt有10個,.java有30個......

public?class?Text02_統計文件夾下的后綴名的文件的個數 {

public?static?void?main(String[] args) {

System.out.println("請輸入一個文件路徑:");

Scanner sc?= new?Scanner(System.in);

String filePath?= sc.nextLine();

?

File file?= new?File(filePath);

//listFiles()遍歷目錄下的所有文件 ??list()遍歷目錄下所有文件名目錄下的子目錄不能遍歷到

File[] files?= file.listFiles();

Map<String, Integer> hMap?= new?HashMap<String, Integer>();

List<String> listEnd?= new?ArrayList<String>();

//d:/IO文檔/xxx

//遍歷

for?(int?i?= 0; i?< files.length; i++) {

String fileName?= files[i].getName();

String[] fileNames?= fileName.split("\\.");

//將每一個文件名的后綴名添加到list中。

listEnd.add(fileNames[1]);

}

?

//.txt有10個,.java有30個......實現后綴名+個數

for?(int?i?= 0; i?< listEnd.size(); i++) {

?

if?(hMap.get(listEnd.get(i)) == null) {

hMap.put(listEnd.get(i), 1);

}else?{

hMap.put(listEnd.get(i), hMap.get(listEnd.get(i))+1);

}

?

}

//遍歷hMap

Set<String> set?= hMap.keySet();

for?(String string?: set) {

Integer value?= hMap.get(string);

System.out.println(string?+ "有"?+ value?+ "個");

}

?

}

?

3、鍵盤錄入一個文件夾路徑,作為源文件夾;鍵盤錄入一個文件夾路徑,作為目標文件夾

寫代碼將源文件夾拷貝到目標文件夾中

a

b

b/a

package?com.henu;

?

import?java.io.*;

import?java.util.Scanner;

?

?

public?class?test {

?public?static?void?main(String[] args) throws?Exception {

?

????????Scanner scanner?= new?Scanner(System.in);

?

????????String srcDir?= scanner.next();

????????String dir?= scanner.next();

?

????????String[] split?= srcDir.split("\\\\");

?

?

????????String tarDir?= dir?+ "\\"?+ split[split.length?- 1];

????????

????????File file?= new?File(tarDir);

????????file.mkdir();

?

????????copyDirectory(new?File(srcDir),file);

????????System.out.println("拷貝成功");

????}

?

????private?static?void?copyDirectory(File srcDir, File tarDir) throws?Exception {

?

????????File[] listFiles?= srcDir.listFiles();

????????//判斷所選路徑是否為空

????????if?(listFiles?== null) {

????????????return;

????????}

?

????????//循環遍歷目錄下每一個文件或文件夾

????????for?(File file?: listFiles) {

?

????????????File srcFile?= file;

????????????File tarFile?= new?File(tarDir, file.getName());

????????????//如果當前文件為文件夾,則遞歸;

????????????//否則拷貝文件

????????????if?(file.isDirectory()) {

????????????????tarFile.mkdirs();

????????????????copyDirectory(srcFile, tarFile);

????????????} else?{

????????????????copyFile(srcFile, tarFile);

????????????}

????????}

????}

?

????public?static?void?copyFile(File srcFile, File tarFile) throws?Exception {

?

????????InputStream is?= new?FileInputStream(srcFile);

????????OutputStream os?= new?FileOutputStream(tarFile);

????????byte[] b?= new?byte[1024];

????????int?len?= 0;

????????while?((len?= is.read(b)) != -1) {

????????????os.write(b, 0, len);

????????????os.flush();

????????}

????????os.close();

????????is.close();

????}

?

?

}

?

4 在D盤下的a/b/c/d中創建一個文件,名稱叫HelloWorld.txt

package?com.henu;

?

import?java.io.File;

import?java.io.IOException;

?

public?class?Test04_創建一個文件 {

?

public?static?void?main(String[] args) {

?

File midir?= new?File("d:/a/b/c/d");

File file?= new?File("d:/a/b/c/d/HelloWorld.txt");

if?(!midir.exists()) {

midir.mkdirs();

create(file);

}else?{

create(file);

}

}

public?static?void?create(File file) {

if?(!file.exists()) {

try?{

file.createNewFile();

} catch?(IOException e) {

e.printStackTrace();

}

System.out.println("創建成功");

}else?{

System.out.println("該文件已經存在");

}

}

}

?

?

5 鍵盤錄入一個字符串,表示一個文件夾路徑,如果不是文件夾路徑則提示重新錄入

??打印當前文件夾下,所有的大于20M的后綴名是.wmv的文件的絕對路徑

package?com.henu;

?

import?java.io.File;

import?java.io.FilenameFilter;

import?java.util.ArrayList;

import?java.util.List;

?

/**************************************************

?* 鍵盤錄入一個字符串,表示一個文件夾路徑,如果不是文件夾路徑則提示重新錄入

??打印當前文件夾下,所有的大于20M的后綴名是.wmv的文件的絕對路徑

?*/

public?class?Test05_打印當前文件夾wmv {

public?static?void?main(String[] args) {

?

//如果你想輸出帶有判斷條件的文件,那么,需要對文件進行過濾,FilenameFilter接口

FilenameFilter filter?= new?FilenameFilter() {

?

@Override

public?boolean?accept(File dir, String name) {

File currFile?= new?File(dir,name);

if?(currFile.isFile() && name.endsWith(".jpg") && currFile.length()/1024 > 50L) {

return?true;

}

return?false;

}

};

?

File file?= new?File("F:\\images");

if?(!file.isDirectory()) {

System.out.println("不是文件夾路徑則提示重新錄入!!!");

}else?{

list.add(file.getAbsolutePath());

files(file);

// System.out.println(list);

}

?

for?(int?i?= 0; i?< list.size(); i++) {

String string?= list.get(i);

// System.out.println(string);

File[] files?= new?File(string).listFiles(filter);

for?(File file2?: files) {

System.out.println(file2.getAbsolutePath());

}

}

?

}

//因為list.add每個目錄是,因為上面有遞歸,所以如果將list定義在方法內部,

//會循環創建list,導致不是一個所有文件目錄的集合

static?List<String> list?= new?ArrayList<>();

public?static?void?files(File file) {

File[] fs?= file.listFiles();//遍歷目錄下所有文件

for?(File f?: fs) {

if?(f.isDirectory()) {

files(f);

list.add(f.getAbsolutePath());

}

}

}

}

*******************************************************************************

package day8_1_作業;

import java.io.File;

import java.io.FileFilter;

import java.util.Scanner;

/*鍵盤錄入一個字符串,表示一個文件夾路徑,如果不是文件夾路徑則提示重新錄入

打印當前文件夾下,所有的大于20M的后綴名是.wmv的文件的絕對路徑*/

public class demo6 {

?

public static void print(File file) {

?

File[] files = file.listFiles(new FileFilter() {

@Override

public boolean accept(File f) {

if((f.getName().endsWith(".txt")&&f.length()<1024)||f.isDirectory()) {

return true;

}

return false;

}

});

for(File f:files) {

if(f.isDirectory()) {

print(f);

}else {

System.out.println(f.getAbsolutePath());

}

}

}

?

public static void main(String[] args) throws Exception{

?

Scanner scanner = new Scanner(System.in);

?

while(true) {

String string = scanner.nextLine();

File file = new File(string);

if(!file.isDirectory()) {

System.out.println("不是文件夾路徑,請重新錄入:");

}else {

print(file);

break;

}

}

}

}

?

6 用代碼實現以下需求

(1)有如下字符串"If you want to change your fate I think you must come to the ujiuye to learn java"(用空格間隔)

(2)打印格式:

to=3

think=1

you=2

//........

  • 按照上面的打印格式將內容寫入到D:\\count.txt文件中(要求用高效流)
  • package?com.henu;

    ?

    import?java.io.BufferedWriter;

    import?java.io.FileWriter;

    import?java.io.IOException;

    import?java.util.HashMap;

    import?java.util.Map;

    import?java.util.Map.Entry;

    import?java.util.Set;

    ?

    /*

    ?* (1)有如下字符串"If you want to change your fate I think you must come to the ujiuye?to learn java"(用空格間隔)

    (2)打印格式:

    to=3

    think=1

    you=2

    //........

    (3)按照上面的打印格式將內容寫入到D:\\count.txt文件中(要求用高效流)

    ?*/

    public?class?Test06_高效流寫入 {

    ?

    public?static?void?main(String[] args) {

    ?

    String str?= "If you want to change your fate I think you must come to the ujiuye to learn java";

    String[] sp?= str.split(" ");

    Map<String, Integer> hMap?= new?HashMap<String, Integer>();

    for?(int?i?= 0; i?< sp.length; i++) {

    int?count?= hMap.containsKey(sp[i])?hMap.get(sp[i])+1:1;

    hMap.put(sp[i], count);

    }

    ?

    try?{

    FileWriter fw?= new?FileWriter("D:/IO文檔/count.txt");

    BufferedWriter bf?= new?BufferedWriter(fw);

    Set<Entry<String, Integer>> set?= hMap.entrySet();

    ?

    for?(Entry<String, Integer> entry?: set) {

    String key?= entry.getKey();

    Integer value?= entry.getValue();

    String res?= key?+ "="?+ value;

    fw.write(res);

    fw.write("\r\n");//寫入換行

    fw.flush();

    }

    fw.close();

    bf.close();

    System.out.println("寫入完畢");

    } catch?(IOException e) {

    e.printStackTrace();

    }

    }

    ?

    }

    ?

    ?

    7、產生10個1-100的隨機數,并放到一個數組中

    (1)把數組中大于等于10的數字放到一個list集合中,并打印到控制臺。

    (2)把數組中的數字放到當前文件夾的number.txt文件中

    package?com.henu;

    ?

    import?java.io.BufferedInputStream;

    import?java.io.BufferedOutputStream;

    import?java.io.BufferedWriter;

    import?java.io.DataInputStream;

    import?java.io.DataOutputStream;

    import?java.io.File;

    import?java.io.FileInputStream;

    import?java.io.FileNotFoundException;

    import?java.io.FileOutputStream;

    import?java.io.FileWriter;

    import?java.util.ArrayList;

    import?java.util.Arrays;

    import?java.util.List;

    ?

    /*

    ?* 產生10個1-100的隨機數,并放到一個數組中

    (1)把數組中大于等于10的數字放到一個list集合中,并打印到控制臺。

    (2)把數組中的數字放到當前文件夾的number.txt文件中

    ?*/

    public?class?Test07_向文件夾放入數組 {

    ?

    public?static?void?main(String[] args) throws?Exception {

    ?

    int[] arr?= new?int[10];

    List<Integer> list?= new?ArrayList<Integer>();

    ?

    for?(int?i?= 0; i?< arr.length; i++) {

    int?x?= (int) (1+Math.random()*100);

    arr[i] = x;

    if?(x?>= 10) {

    list.add(x);

    }

    }

    System.out.println(Arrays.toString(arr));

    //[16, 52, 2, 60, 43, 27, 23, 69, 74, 38]

    System.out.println(list);

    //[16, 52, 60, 43, 27, 23, 69, 74, 38]

    ?

    //將基本數據類型序列化和反序列化的類:DataOutputStream ?DataInputStream

    //不僅提供了讀寫各種基本數據類型的流,而且還提供了readUTF()和writeUTF()

    DataOutputStream dos?= new?DataOutputStream(new?FileOutputStream("d:/IO文檔/number.txt"));

    for?(Integer integer?: list) {

    dos.write(integer);

    dos.flush();

    }

    dos.close();

    System.out.println("寫入完畢");

    //因為將數字寫入到.txt出現了亂碼所以將其讀出,看是否正確。

    DataInputStream dis?= new?DataInputStream(new?FileInputStream("d:/IO文檔/number.txt"));

    int?len?= 0;

    while((len?= dis.read()) != -1) {

    System.out.print(len+"-");

    }

    //16-52-60-43-27-23-69-74-38-

    dis.close();

    ?

    }

    ?

    }

    ?

    ?

    總結

    以上是生活随笔為你收集整理的JavaSE各阶段练习题----文件和IO的全部內容,希望文章能夠幫你解決所遇到的問題。

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