欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java怎么對(duì)文件進(jìn)行基本操作

這篇文章主要介紹“Java怎么對(duì)文件進(jìn)行基本操作”,在日常操作中,相信很多人在Java怎么對(duì)文件進(jìn)行基本操作問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Java怎么對(duì)文件進(jìn)行基本操作”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

安丘網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司

File文件類

  • java.io.File是文件和目錄的重要類(JDK6及以前是唯一)

  • 目錄也使用File類進(jìn)行表示

  • File類與操作系統(tǒng)無(wú)關(guān),但會(huì)受到操作系統(tǒng)的權(quán)限限制

  • 常用方法

  • createNewFile , delete , exists , getAbsolutePath , getName , getParent , getPath

  • isDirectory , isFile , length , listFiles , mkdir , mkdirs

  • File不涉及到具體的文件內(nèi)容、只會(huì)涉及屬性

public static void main(String[] args) {
    // 創(chuàng)建目錄
    File directory = new File("D:/temp");
    boolean directoryDoesNotExists = ! directory.exists();
    if (directoryDoesNotExists) {
        // mkdir是創(chuàng)建單級(jí)目錄
        // mkdirs是連續(xù)創(chuàng)建多級(jí)目錄
        directory.mkdirs();

    }
    // 創(chuàng)建文件
    File file = new File("D:/temp/test.txt");
    boolean fileDoesNotExsits = ! file.exists();
    if (fileDoesNotExsits) {
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 遍歷directory下的所有文件消息
    File[] files = directory.listFiles();
    for (File file1 : files) {
        System.out.println(file1.getPath());
    }

}

運(yùn)行結(jié)果:

D:\temp\test.txt

Java NIO

Java 7提出的NIO包,提出新的文件系統(tǒng)類Path , Files , DirectoryStream , FileVisitor , FileSystem是對(duì)java.io.File的有益補(bǔ)充文件復(fù)制和移動(dòng)文件相對(duì)路徑遞歸遍歷目錄遞歸刪除目錄

Path類

public static void main(String[] args) {
    // Path和java.io.File基本類似
    Path path = FileSystems.getDefault().getPath("D:/temp", "abc.txt");
    // D:/ 返回1 D:/temp 返回2
    System.out.println(path.getNameCount());

    // 用File的toPath()方法獲取Path對(duì)象
    File file = new File("D:/temp/abc.txt");
    Path path2 = file.toPath();
    System.out.println(path.compareTo(path2)); // 結(jié)果為0 說(shuō)明兩個(gè)path相等
    // 獲取Path方法三
    Path path4 = Paths.get("D:/temp", "abc.txt");
    // 判斷文件是否可讀
    System.out.println("文件是否可以讀取: " + Files.isReadable(path));
}

Files類

public static void main(String[] args) {
    // 移動(dòng)文件
    moveFile();
    // 訪問(wèn)文件屬性
    fileAttributes();
    // 創(chuàng)建目錄
    createDirectory();
}

private static void createDirectory() {
    Path path = Paths.get("D:/temp/test");
    try {
        // 創(chuàng)建文件夾
        if (Files.notExists(path)) {
            Files.createDirectory(path);
        } else {
            System.out.println("文件夾創(chuàng)建失敗");
        }
        Path path3 = path.resolve("a.java");
        Path path4 = path.resolve("b.java");
        Path path5 = path.resolve("c.txt");
        Path path6 = path.resolve("d.jpg");
        Files.createFile(path3);
        Files.createFile(path4);
        Files.createFile(path5);
        Files.createFile(path6);

        // 不帶條件的遍歷輸出
        DirectoryStream<Path> listDirectory = Files.newDirectoryStream(path);
        for (Path path2 : listDirectory) {
            System.out.println(path2.getFileName());
        }
        // 創(chuàng)建一個(gè)帶有過(guò)濾器,過(guò)濾文件名以java txt結(jié)尾的文件
        DirectoryStream<Path> pathsFilter = Files.newDirectoryStream(path, "*.{java,txt}");
        for (Path item : pathsFilter) {
            System.out.println(item.getFileName());
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@SuppressWarnings("all")
private static void fileAttributes() {
    Path path = Paths.get("D:/temp");
    // 判斷是否是目錄
    System.out.println(Files.isDirectory(path, LinkOption.NOFOLLOW_LINKS));
    try {
        // 獲取文件的基礎(chǔ)屬性
        BasicFileAttributes attributes = Files.readAttributes(path, BasicFileAttributes.class);
        // 判斷是否是目錄
        System.out.println(attributes.isDirectory());
        // 獲取文件最后修改時(shí)間
        System.out.println(new Date(attributes.lastModifiedTime().toMillis()).toLocaleString());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private static void moveFile() {
    Path from = Paths.get("D:/temp", "text.txt");
    // 將文件移動(dòng)到D:/temp/test/text.txt, 如果目標(biāo)文件以存在則替換
    Path to = from.getParent().resolve("test/text.txt");
    try {
        // 文件大小bytes
        System.out.println(Files.size(from));
        // 調(diào)用文件移動(dòng)方法,如果目標(biāo)文件已存在則替換
        Files.move(from, to, StandardCopyOption.REPLACE_EXISTING);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

遞歸遍歷查找指定文件

public class Demo2 {
    public static void main(String[] args) {
        // 查找以.jpg結(jié)尾的
        String ext = "*.jpg";
        Path fileTree = Paths.get("D:/temp/");
        Search search = new Search(ext);
        EnumSet<FileVisitOption> options = EnumSet.of(FileVisitOption.FOLLOW_LINKS);
        try {
            Files.walkFileTree(fileTree, options, Integer.MAX_VALUE, search);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
class Search implements FileVisitor {
    private PathMatcher matcher;
    public Search(String ext) {
        this.matcher = FileSystems.getDefault().getPathMatcher("glob:" + ext);
    }

    public void judgeFile(Path file) throws IOException {
        Path name = file.getFileName();
        if (name != null && matcher.matches(name)) {
            // 文件名匹配
            System.out.println("匹配的文件名: " + name);
        }
    }
    // 訪問(wèn)目錄前調(diào)用
    @Override
    public FileVisitResult preVisitDirectory(Object dir, BasicFileAttributes attrs) throws IOException {
        return FileVisitResult.CONTINUE;
    }
    // 訪問(wèn)文件時(shí)調(diào)用
    @Override
    public FileVisitResult visitFile(Object file, BasicFileAttributes attrs) throws IOException {
        judgeFile((Path) file);
        return FileVisitResult.CONTINUE;
    }
    // 訪問(wèn)文件失敗后調(diào)用
    @Override
    public FileVisitResult visitFileFailed(Object file, IOException exc) throws IOException {
        return FileVisitResult.CONTINUE;
    }
    // 訪問(wèn)一個(gè)目錄后調(diào)用
    @Override
    public FileVisitResult postVisitDirectory(Object dir, IOException exc) throws IOException {
        System.out.println("postVisit: " + (Path) dir);
        return FileVisitResult.CONTINUE;
    }
}

運(yùn)行結(jié)果:

匹配的文件名: d.jpg
postVisit: D:\temp\test
postVisit: D:\temp

Java的IO包

Java讀寫文件,只能以數(shù)據(jù)流的形式進(jìn)行讀寫java.io包中節(jié)點(diǎn)類:直接對(duì)文件進(jìn)行讀寫包裝類:1、轉(zhuǎn)換類:字節(jié) / 字符 / 數(shù)據(jù)類型的轉(zhuǎn)化類 。2、裝飾類:裝飾節(jié)點(diǎn)類。

節(jié)點(diǎn)類

直接操作文件類InputStream,OutStream(字節(jié))    FileInputStream , FileOutputStream Reader , Writer(字符)    FileReader , FileWriter

轉(zhuǎn)換類

從字符到字節(jié)之間的轉(zhuǎn)化InputStreamReader: 文件讀取時(shí)字節(jié),轉(zhuǎn)化為Java能理解的字符OutputStreamWriter: Java將字符轉(zhuǎn)化為字節(jié)輸入到文件中

裝飾類

DataInputStream , DataOutputStream :封裝數(shù)據(jù)流BufferedInputStream ,BufferOutputStream:緩存字節(jié)流BufferedReader , BufferedWriter:緩存字符流

文本文件的讀寫

寫操作

public static void main(String[] args) {
    writeFile();
}

public static void writeFile(){
    try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:/temp/demo3.txt")))) {
        bw.write("hello world");
        bw.newLine();
        bw.write("Java Home");
        bw.newLine();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Demo3.txt文件內(nèi)容

hello world
Java Home

讀操作

public static void main(String[] args) {
    readerFile();
}

private static void readerFile() {
    String line = "";
    try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:/temp/demo3.txt")))) {
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

運(yùn)行結(jié)果:

hello world
Java Home

二進(jìn)制文件讀寫java

public static void main(String[] args) {
    writeFile();
}

private static void writeFile() {
    try (DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("D:/temp/test.dat")))) {
        dos.writeUTF("hello");
        dos.writeUTF("hello world is test bytes");
        dos.writeInt(20);
        dos.writeUTF("world");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

文件內(nèi)容

hellohello world is test bytes  world

讀操作

public static void main(String[] args) {
   readFile();
}

private static void readFile() {
    try (DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream("D:/temp/test.dat")))) {
        System.out.println(in.readUTF() + in.readUTF() + in.readInt() + in.readUTF());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

運(yùn)行結(jié)果:

hellohello world is test bytes20world

ZIP文件的讀寫

  • zip文件操作類:java.util.zip包中

  • java.io.InputStream , java.io.OutputStream的子類

  • ZipInputStream , ZipOutputStream壓縮文件輸入 / 輸出流

  • ZipEntry壓縮項(xiàng)

多個(gè)文件壓縮

// 多個(gè)文件壓縮
public static void main(String[] args) {
    zipFile();
}
public static void zipFile() {
    File file = new File("D:/temp");
    File zipFile = new File("D:/temp.zip");
    FileInputStream input = null;
    try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) {
        // 添加注釋
        zos.setComment(new String("多個(gè)個(gè)文件壓縮".getBytes(),"UTF-8"));

        // 壓縮過(guò)程
        int temp = 0;
        // 判斷是否為文件夾
        if (file.isDirectory()) {
            File[] listFile = file.listFiles();
            for (int i = 0; i < listFile.length; i++) {
                    // 定義文件的輸出流
                    input = new FileInputStream(listFile[i]);
                    // 設(shè)置Entry對(duì)象
                    zos.putNextEntry(new ZipEntry(file.getName() +
                            File.separator + listFile[i].getName() ));
                    System.out.println("正在壓縮: " + listFile[i].getName());
                    // 讀取內(nèi)容
                    while ((temp = input.read()) != -1) {
                        // 壓縮輸出
                        zos.write(temp);
                    }
                    // 關(guān)閉輸入流
                    input.close();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

注意:壓縮的文件夾不能有子目錄,否則會(huì)報(bào)FileNotFoundException: D:\temp\test (拒絕訪問(wèn)。),這是由于input = new FileInputStream(listFile[i]);讀取的文件類型是文件夾導(dǎo)致的

多個(gè)文件解壓縮

// 多個(gè)文件解壓縮
public static void main(String[] args) throws Exception{
    // 待解壓的zip文件,需要在zip文件上構(gòu)建輸入流,讀取數(shù)據(jù)到Java中
    File file = new File("C:\\Users\\Wong\\Desktop\\test.zip");

    // 輸出文件的時(shí)候要有文件夾的操作
    File outFile = null;
    // 實(shí)例化ZipEntry對(duì)象
    ZipFile zipFile = new ZipFile(file);

    // 定義解壓的文件名
    OutputStream out = null;
    // 定義輸入流,讀取每個(gè)Entry
    InputStream input = null;
    // 每一個(gè)壓縮Entry
    ZipEntry entry = null;
    
    // 定義壓縮輸入流,實(shí)例化ZipInputStream
    try (ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file))) {
        // 遍歷壓縮包中的文件
        while ((entry = zipInput.getNextEntry()) != null) {
            System.out.println("解壓縮 " + entry.getName().replaceAll("/", "") + " 文件");
            // 定義輸出的文件路徑
            outFile = new File("D:/" + entry.getName());
            
            boolean outputDirectoryNotExsits = !outFile.getParentFile().exists();
            // 當(dāng)輸出文件夾不存在時(shí)
            if (outputDirectoryNotExsits) {
                // 創(chuàng)建輸出文件夾
                outFile.getParentFile().mkdirs();
            }
            
            boolean outFileNotExists = !outFile.exists();
            // 當(dāng)輸出文件不存在時(shí)
            if (outFileNotExists) {
                if (entry.isDirectory()) {
                    outFile.mkdirs();
                } else {
                    outFile.createNewFile();
                }
            }

            boolean entryNotDirctory = !entry.isDirectory();
            if (entryNotDirctory) {
                input = zipFile.getInputStream(entry);
                out = new FileOutputStream(outFile);
                int temp = 0;
                while ((temp = input.read()) != -1) {
                    out.write(temp);
                }
                input.close();
                out.close();
                System.out.println("解壓縮成功");
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

到此,關(guān)于“Java怎么對(duì)文件進(jìn)行基本操作”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

文章題目:Java怎么對(duì)文件進(jìn)行基本操作
文章出自:http://aaarwkj.com/article42/gdiehc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)用戶體驗(yàn)、網(wǎng)站維護(hù)、手機(jī)網(wǎng)站建設(shè)、小程序開(kāi)發(fā)、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
十八禁真人无摭挡观看| 国产怡红院在线视频观看| 中文字幕一区二区精品区| 精品国产18禁99久久久久久| 免费无遮挡午夜视频网站| 久亚洲精品色婷婷国产熟女| 欧美夫妻香蕉视频网站| 国产成人福利视频在线观看| 日本加勒比一道本东京热| 亚洲精品啪啪一区二区| 婷婷激情综合亚洲五月色| 91超碰这里只有精品国产| 日本国产一区二区精品| 中文字幕日韩午夜精品| 在线免费观看国产不卡| 欧美日韩精品视频网站| 欧美黄片在线播放视频| 亚洲av成人av天堂| 日本国产精品免费在线观看| 四虎精品永久在线视频| 亚洲精品一区二区成人影院| 亚洲最大色网在线观看| 国内精品久久久久久2021| 日韩中文字幕免费一区二区| 四虎国产精品久久久久久网址| 欧美日韩亚洲精品综合网| 蜜桃精品国产一区二区三区| 亚洲av日韩欧美精品| 国产精品久久久久精品三级下载| 欧美日韩一区二区激情在线| 99热这里只有精品欧美| 精品人妻一区三区蜜桃| 一区二区久久精品视频| 欧美伊香蕉久久综合网99| 国产三级全黄在线播放| 日韩中文字幕一区二区不卡| 亚洲另类熟女国产精品老| 校园春色亚洲一区二区| 亚洲视频在线男人天堂| 未满18周岁禁止观看视频| 男女真人啪啪视频免费 |