Java---文件,流???

文章目錄

    • 1.遍歷文件夾
    • 2.遍歷子文件夾
    • 3.練習流
    • 4.以字節流的形式讀取文件內容
    • 5.以字節流的形式向文件寫入數據頂折糾問
    • 6 .寫入數據到文件

1.遍歷文件夾

一般說來操作系統都會安裝在C盤,所以會有一個 C:\WINDOWS目錄。
遍歷這個目錄下所有的文件(不用遍歷子目錄)
找出這些文件里,最大的和最小(非0)的那個文件,打印出他們的文件名
注: 最小的文件不能是0長度

package Basic.wordhard;import java.io.File;public class Demo {public static void main(String[] args) {File f=new File("C:\\Windows");// 以文件數組的形式,返回當前文件夾下的所有文件(不包含子文件及子文件夾)File fs[]=f.listFiles();File max_file = null,min_file=null;long min=Long.MAX_VALUE;long max=0;for(File e:fs){if(e.length()>max){max=e.length();max_file=e;}if(e.length()!=0&&e.length()<min){min=e.length();min_file=e;}}System.out.println("找出的最大文件為"+max_file.getName()+"    文件大小"+max);System.out.println("找出的最小文件為"+min_file.getName()+"    文件大小"+min);}
}

在這里插入圖片描述

2.遍歷子文件夾

同上的練習,要求遍歷子文件夾

package Basic.wordhard;
import java.io.File;
public class Demo {static File minFile = null;static File maxFile = null;public static void main(String[] args) {File dir = new File("C:\\WINDOWS");traverseFolder(dir);if (minFile != null) {System.out.println("最小的文件是 " + minFile.getName() + ",其大小是 " + minFile.length() + " 字節");}if (maxFile != null) {System.out.println("最大的文件是 " + maxFile.getName() + ",其大小是 " + maxFile.length() + " 字節");}}public static void traverseFolder(File dir) {File[] files = dir.listFiles();if (files == null || files.length == 0) {return;}for (File file : files) {if (file.isFile()) {if (minFile == null || (file.length() < minFile.length() && file.length() != 0)) {minFile = file;}if (maxFile == null || file.length() > maxFile.length()) {maxFile = file;}} else if (file.isDirectory()) {traverseFolder(file);}}}
}

在這里插入圖片描述

3.練習流

當不同的介質之間有數據交互的時候,JAVA就使用流來實現。
數據源可以是文件,還可以是數據庫,網絡甚至是其他的程序
比如讀取文件的數據到程序中,站在程序的角度來看,就叫做輸入流
輸入流: InputStream
輸出流:OutputStream

題目:建立一個文件輸入流

package Basic.wordhard;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;public class Demo {public static void main(String[] args) {try{File f=new File("D://lol.txt");FileInputStream fis=new FileInputStream(f);// 通過這個輸入流,就可以把數據從硬盤,讀取到Java的虛擬機中來,也就是讀取到內存中}catch (IOException e){e.printStackTrace();}}
}

4.以字節流的形式讀取文件內容

InputStream是字節輸入流,同時也是抽象類,只提供方法聲明,不提供方法的具體實現。
FileInputStream 是InputStream子類,以FileInputStream 為例進行文件讀取

package Basic.wordhard;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;public class Demo {public static void main(String[] args) {try{File f=new File("d://lol.txt");FileInputStream fis=new FileInputStream(f);byte array[]=new byte[(int) f.length()];fis.read(array);for(byte e:array){System.out.println(e);}fis.close();}catch (IOException e){e.printStackTrace();}}
}

5.以字節流的形式向文件寫入數據頂折糾問

OutputStream是字節輸出流,同時也是抽象類,只提供方法聲明,不提供方法的具體實現。
FileOutputStream 是OutputStream子類,以FileOutputStream 為例向文件寫出數據
注: 如果文件d:/lol2.txt不存在,寫出操作會自動創建該文件。
但是如果是文件 d:/xyz/lol2.txt,而目錄xyz又不存在,會拋出異常

package Basic.wordhard;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Demo {public static void main(String[] args) {try{File f=new File("D:\\lol2.txt");FileOutputStream fos=new FileOutputStream(f);byte Date[]={97,98};fos.write(Date);fos.close();}catch (IOException e){e.printStackTrace();}}
}

6 .寫入數據到文件

以字節流的形式向文件寫入數據 中的例子,當lol2.txt不存在的時候,是會自動創建lol2.txt文件的。
但是,如果是寫入數據到d:/xyz/lol2.txt,而目錄xyz又不存在的話,就會拋出異常。
那么怎么自動創建xyz目錄?
如果是多層目錄 d:/xyz/abc/def/lol2.txt 呢?

package Basic.wordhard;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Demo {public static void main(String[] args) {try{File f=new File("d:/xyz/abc/def");if(!f.exists()){f.mkdirs();}byte data[]={97,98};File f1=new File(f,"lol2.txt");FileOutputStream fos=new FileOutputStream(f1);fos.write(data);fos.close();}catch (IOException e){e.printStackTrace();}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719379.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719379.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ssh連接ubantu失敗

新系統Ubuntu20.4 安裝ssh server 1. 安裝 openssh-server2. 開啟22號端口 # 安裝ssh服務 sudo apt-get install openssh-server # 安裝防火墻 sudo apt-get install ufw # 開啟防火墻 sudo ufw enable #放開22端口 sudo ufw allow 22 開啟22號端口 倘若ubuntu沒有開啟22…

HTTP/2、HTTP/3分別解決了什么問題

總的來說就是HTTP/1.1是請求-響應模型導致隊頭阻塞問題&#xff0c;HTTP2是TCP層面導致隊頭阻塞問題 HTTP/2 多路復用&#xff0c;解決了HTTP/1.1隊頭阻塞問題 HTTP/1.1 的實現是基于請求-響應模型的。同一個連接中&#xff0c;HTTP 完成一個事務&#xff08;請求與響應&…

3.4作業

課上代碼復習&#xff1a; 廣播接收端代碼: #include<myhead.h> int main(int argc, const char *argv[]) {//創建套接字int rfd socket(AF_INET,SOCK_DGRAM,0);if(rfd -1){perror("socket error");return -1;}printf("rfd %d\n",rfd);//填充地…

臺式電腦電源各線的電壓和電流輸出和輸出電流

臺式電腦電源是電腦硬件的重要組成部分。 它為計算機的各個部件提供所需的電壓和電流。 不同的硬件設備和組件有不同的電壓和電流輸出。 下面詳細介紹臺式電腦電源各線的電壓&#xff0c;包括3.3V、5V、12V、-12V、-5V和5VSB&#xff0c;以及它們的輸出電流和用途。 3.3V&#…

【AI+CAD】(一)ezdxf 解析DXF文件

DXF文件格式理解 DXF文件格式是矢量圖形文件格式&#xff0c;其詳細說明了如何表示不同的圖形元素。 DXF是一個矢量圖形文件&#xff0c;它捕獲CAD圖形的所有元素&#xff0c;例如文本&#xff0c;線條和形狀。更重要的是&#xff0c;DXF是用于在CAD應用程序之間傳輸數據的圖形…

STM32自學?I2C

這里只是大體介紹&#xff0c;具體的可參考STM32數據手冊

數據結構與算法-選擇排序

引言 在計算機科學中&#xff0c;數據結構和算法是兩個至關重要的基石。它們共同決定了程序的效率、可讀性和可維護性。本文我們將聚焦于一種基礎而直觀的排序算法——選擇排序&#xff0c;并探討其內在的工作機制以及在實際應用中的優缺點。 一、什么是選擇排序&#xff1f; …

Leetcode 3067. Count Pairs of Connectable Servers in a Weighted Tree Network

Leetcode 3067. Count Pairs of Connectable Servers in a Weighted Tree Network 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3067. Count Pairs of Connectable Servers in a Weighted Tree Network 1. 解題思路 這一題沒想到什么好的方法&#xff0c;走的是暴力求解的路…

xss.haozi.me:0x07

<img src1 onerroralert(1)

Spring MVC ThemeResolver原理解析

在Spring MVC框架中&#xff0c;ThemeResolver&#xff08;主題解析器&#xff09;是一個重要但經常被忽視的組件。它負責解析和管理Web應用程序中的主題設置&#xff0c;允許用戶根據不同的需求和偏好切換界面主題。ThemeResolver為開發者提供了一種靈活的方式來控制應用程序的…

tomcat下載安裝配置教程

tomcat下載安裝配置教程 我是使用tomcat下載安裝及配置教程_tomcat安裝-CSDN博客 此貼來進行安裝配置&#xff0c;原文21年已經有些許不同。 下載tomcat 官網&#xff1a;http://tomcat.apache.org/ 我們老師讓安裝8.5以上&#xff0c;所以我直接選擇版本9 點擊9頁面之后…

DPDK常用API合集三

librte_timer 此庫為 DPDK 執行單元提供定時器服務&#xff0c;提供異步執行函數的能力。它可以是周期性的函數調用&#xff0c;也可以是一次性調用。它使用環境抽象層&#xff08;EAL&#xff09;提供的定時器接口獲取精確的時間參考&#xff0c;并可以根據需要以每個核心為基…

2024.03.03藍橋云課筆記——排序

sort簡介 #include<algorithm> 使用的是快速排序 時間復雜度為O(nlogn) sort使用(默認是從小到大) 1.sort(起始地址&#xff0c;結束地址的下一位&#xff0c;*比較函數&#xff09;&#xff1b; #include<iostream> #include<algorithm> using namesp…

HTTPS的實現原理

圖片來源&#xff1a;HTTPS 詳解一&#xff1a;附帶最精美詳盡的 HTTPS 原理圖 - 個人文章 - SegmentFault 思否 加密流程按圖中的序號分為&#xff1a; 客戶端請求 HTTPS 網址&#xff0c;然后連接到 server 的 443 端口 (HTTPS 默認端口&#xff0c;類似于 HTTP 的80端口)。…

Windows批處理:bat文件學習

目錄 第一章、快速了解Windows批處理1.1&#xff09;Windows批處理相關概念介紹1.1.1&#xff09;批處理的起源1.1.2&#xff09;bat文件介紹 1.2&#xff09;Demo1.2.1&#xff09;創建文件添加命令1.2.2&#xff09;bat腳本中的命令解釋 第二章、實例2.1&#xff09;點擊bat文…

navicat安裝11.3

一、安裝navicat 1、下載navicat 2、解壓壓縮包 3、點擊exe文件 4、輸入密鑰&#xff1a; NAVH-WK6A-DMVK-DKW3 5、點擊打開&#xff1a; 輸入連接參數&#xff1a; 6、查看連接好倉庫 7、 在使用navicat來編寫sql語句 8、編寫語句 連接不上問題&#xff0c;檢查問題&#…

[出錯]-RuntimeError: “slow_conv_transpose2d_out_cpu“ not implemented for ‘Byte‘

一開始我一直一維是torch版本的問題 輸入是用cv2讀出來的&#xff0c;數據類型dtype是默認是unit8&#xff0c;輸入到模型中&#xff0c;除了要將他轉為tenso以外&#xff0c;還要.float將數據類型轉為浮點數。

【Vue3】深入理解Vue中的ref屬性

&#x1f497;&#x1f497;&#x1f497;歡迎來到我的博客&#xff0c;你將找到有關如何使用技術解決問題的文章&#xff0c;也會找到某個技術的學習路線。無論你是何種職業&#xff0c;我都希望我的博客對你有所幫助。最后不要忘記訂閱我的博客以獲取最新文章&#xff0c;也歡…

Redis 之三:Redis 的發布訂閱(pub/sub)

概念介紹 Redis 發布訂閱 (pub/sub) 是一種消息通信模式&#xff0c;它允許客戶端之間進行異步的消息傳遞 Redis 客戶端可以訂閱任意數量的頻道。 模型中的角色 在該模型中&#xff0c;有三種角色&#xff1a; 發布者&#xff08;Publisher&#xff09;&#xff1a;負責發送信…

嵌入式中7個底層數據結構分解

在編程的世界里&#xff0c;數據結構是構建信息框架的骨架。就像現實生活中的建筑需要精心設計的結構一樣&#xff0c;我們的數據也需要合適的結構來保證程序的高效和穩定。今天&#xff0c;我們就像探險家一樣&#xff0c;一起去探索七大數據結構的奧秘&#xff0c;并揭開它們…