大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java讀寫(xiě)文件教程

Java讀寫(xiě)文件教程

更新時(shí)間:2022-04-02 11:04:58 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1695次

1.文件的Java I/O(輸入/輸出)

(1)概述

Java 提供了java.nio.file讀取和寫(xiě)入文件的 API。該類InputStream是表示字節(jié)輸入流的所有類的超類。

(2)用Java讀取文件

要讀取文本文件,您可以使用該Files.readAllBytes方法。下面的清單演示了此方法的用法。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
// somewhere in your code
String content = Files.readString(Path.of("resources", "work", "input.xml"));

要將文本文件逐行讀取到List類型String結(jié)構(gòu)中,您可以使用該Files.readAllLines方法。

List<String> lines = Files.readAllLines(Paths.get(fileName));

Files.readAllLines使用 UTF-8 字符編碼。它還確保在讀取所有字節(jié)后或發(fā)生異常時(shí)關(guān)閉文件。

(3)逐行讀取和過(guò)濾

該Files.lines方法允許逐行讀取文件,提供流。這個(gè)流可以被過(guò)濾和映射。 Files.lines讀取文件內(nèi)容后不會(huì)關(guān)閉文件,因此應(yīng)將其包裝在 try-with-resource 語(yǔ)句中。

在下面的示例中,每行末尾不必要的空格被刪除,空行是過(guò)濾器。

//read all lines and remove whitespace (trim)
//filter empty lines
//and print result to System.out
Files.lines(new File("input.txt").toPath())
    .map(s -> s.trim())
 .filter(s -> !s.isEmpty())
 .forEach(System.out::println);

下一個(gè)示例演示如何根據(jù)某個(gè)正則表達(dá)式過(guò)濾掉行。

Files.lines(new File("input.txt").toPath())
    .map(s -> s.trim())
 .filter(s -> !s.matches("yourregularexpression"))
 .forEach(System.out::println);

MANIFEST.MF下一個(gè)示例從位于文件夾中的文件中提取以“Bundle-Version:”開(kāi)頭的行META-INF。它刪除前綴并刪除所有前導(dǎo)和尾隨空格。

package com.vogella.eclipse.ide.first;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Optional;
import java.util.stream.Stream;
public class ReadMANIFESTFile {
    public static void main(String[] args) throws IOException {
        String versionString = readStreamOfLinesUsingFiles();
        System.out.println(versionString);
    }
    private static String readStreamOfLinesUsingFiles() throws IOException {
        Stream<String> lines = Files.lines(Paths.get("META-INF", "MANIFEST.MF"));
        Optional<String> versionString = lines.filter(s -> s.contains("Bundle-Version:")).map(e-> e.substring(15).trim()).findFirst();
        lines.close();
        if (versionString.isPresent())
        {
            return versionString.get();
        }
        return "";
    }
}

(4)用Java編寫(xiě)文件

要寫(xiě)入文件,您可以使用以下方法:

Files.write(stateFile.toPath(), content.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE);

(5)使用 Files.list() 列出所有文件和子目錄

您可以訪問(wèn)與 Java 程序的當(dāng)前執(zhí)行目錄相關(guān)的文件。要訪問(wèn)運(yùn)行 Java 程序的當(dāng)前目錄,可以使用以下語(yǔ)句。

// writes all files of the current directory
Files.list(Paths.get(".")).forEach(System.out::println);

(6)如何識(shí)別當(dāng)前目錄

String currentDir = System.getProperty("user.dir");

2.練習(xí):讀寫(xiě)文件

創(chuàng)建一個(gè)名為com.vogella.java.files的新 Java 項(xiàng)目。創(chuàng)建以下FilesUtil.java類

package com.vogella.java.files;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.List;
public class FilesUtil {
    public static String readTextFile(String fileName) throws IOException {
        String content = new String(Files.readAllBytes(Paths.get(fileName)));
        return content;
    }
    public static List<String> readTextFileByLines(String fileName) throws IOException {
        List<String> lines = Files.readAllLines(Paths.get(fileName));
        return lines;
    }
    public static void writeToTextFile(String fileName, String content) throws IOException {
        Files.write(Paths.get(fileName), content.getBytes(), StandardOpenOption.CREATE);
    }
}

要測(cè)試這些方法,請(qǐng)?jiān)陧?xiàng)目文件夾中創(chuàng)建一個(gè)file.txt包含一些內(nèi)容的文本文件。創(chuàng)建以下Main類并運(yùn)行它。

package com.vogella.java.files;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main {
  public static void main(String[] args) throws IOException {
    String input = FilesUtil.readTextFile("file.txt");
    System.out.println(input);
    FilesUtil.writeToTextFile("copy.txt", input);
    System.out.println(FilesUtil.readTextFile("copy.txt"));
    FilesUtil.readTextFileByLines("file.txt");
    Path path = Paths.get("file.txt");
  }
}

3.示例:遞歸列出一個(gè)目錄的所有文件

Java 8 提供了一個(gè)很好的流來(lái)處理樹(shù)中的所有文件。

Files.walk(Paths.get(path))
     .filter(文件::isRegularFile)
     .forEach(System.out::println);

4. 示例:刪除包含所有子目錄和文件的目錄

刪除目錄及其所有內(nèi)容。

String stringPath="...yourPath...";
Path path = new File(stringPath).toPath();
Files.walk(path)
    .sorted(Comparator.reverseOrder())
    .map(Path::toFile)
.forEach(File::delete);

5. 從你的項(xiàng)目/jar 中讀取資源

.getClass().getResourceAsStream()您可以通過(guò)任何對(duì)象的方法鏈從項(xiàng)目或 jar 文件中讀取資源。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 特黄特级a级黄毛片免费观看多人 | 99精品国产在现线免费 | 欧美国产亚洲18 | 亚洲精品乱码久久久久 | 五月色婷婷亚洲精品 | 亚洲精品久久久中文字 | 久久久国产精品网站 | 亚洲精品欧洲一区二区三区 | 色色色在线 | 毛片大全免费观看 | a一级毛片视频免费看 | 性大特级毛片视频 | 一级在线 | 欧洲 | 天天综合在线观看 | 欧美一区二区影院 | 亚洲图片一区二区 | 免费av一区二区三区 | 亚洲五月综合网色九月色 | 2020年新四虎免费 | 9999热| 久久久久久久国产精品 | 欧美久色 | 91最新国产 | 国产国语videosex | 私人影院在线 | 国产精品乱码免费一区二区 | 国产福利区一区二在线观看 | 人人狠狠综合久久亚洲婷婷 | 久久国产小视频 | 日韩天堂视频 | 欧美真人毛片动作视频 | 成人a毛片免费视频观看 | 男人边吃奶边爱边做视频日韩 | 亚洲综合成人在线 | 激情亚州| 日日摸夜夜摸狠狠摸日日碰夜夜做 | 日本成片网 | 亚洲视频在线一区二区 | 久热最新| 亚洲成人在线免费视频 | 中文字幕在线免费观看视频 |