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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文件操作函数java_java中文件的操作

發布時間:2025/4/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文件操作函数java_java中文件的操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:java的讀寫操作是學java開發的必經之路,Java.io包中包括許多類提供許多有關文件的各個方面操作。下面就來總結下java的讀寫操作。

主要內容如下

1.字節流與字符流的區別

2.文件操作

3文件操作的具體實現

4.實戰:解鎖功能

一. 字節流與字符流的區別:

字節流與字符流主要的區別是他們的的處理方式

字節流是最基本的,采用ASCII編碼,所有的InputStream和OutputStream的子類都是,主要用在處理二進制數據,它是按字節來處理的

但實際中很多的數據是文本,又提出了字符流的概念,采用Unicode編碼.它是按虛擬機的encode來處理,也就是要進行字符集的轉化

這兩個之間通過 InputStreamReader,OutputStreamWriter來關聯,實際上是通過byte[]和String來關聯

字節流 InputStream 輸入 OutputStream 輸出

字符流 Reader 輸入 Writer 輸出

其它的類都是繼承這四個基本類的!

二:文件操作的一些總結:

1 輸入輸出抽象基類InputStream/OutputStream ,實現文件內容操作的基本功能函數read()、 write()、close()、skip()等;一般都是創建出其派生類對象(完成指定的特殊功能)來實現文件讀寫。在文件讀寫的編程過程中主要應該注意異常處理的技術。

2 FileInputStream/FileOutputStream:

用于本地文件讀寫(二進制格式讀寫并且是順序讀寫,讀和寫要分別創建出不同的文件流對象);

本地文件讀寫編程的基本過程為:

① 生成文件流對象(對文件讀操作時應該為FileInputStream類,而文件寫應該為FileOutputStream類);

② 調用FileInputStream或FileOutputStream類中的功能函數如read()、write(int b)等)讀寫文件內容;

③ 關閉文件(close())。

3隨機文件讀寫:

RandomAccessFile類(它直接繼承于Object類而非InputStream/OutputStream類),從而可以實現讀寫文件中任何位置中的數據(只需要改變文件的讀寫位置的指針)。

隨機文件讀寫編程的基本過程為:

① 生成流對象并且指明讀寫類型;

② 移動讀寫位置;

③ 讀寫文件內容;

④ 關閉文件。

三:方法的實現:創建文件、讀取文件、關閉文件等

創建文件:

使用構造方法,如下:

String path = "C:\Users\Administrator\Desktop\java";

File file = new File(path.concat.("/text.txt"));

if(file.exists() == false)

{//不存在就創建

file.createNewFile();

}

2.文件寫入字節流

FileOutputString fos = new FileOutString(file);

byte [] text = {'1','2','3','4'};

fos.write(text);

//操作完就要關閉文件

fos.close();

3.讀取字節流

FileInputString fis = new FileInString(file);

byte [] name =new byte[12];

int count = fis.read(name) ;

//操作完就要關閉文件

fis.close();

4,文件中寫入字符流

FileWriter fw = new FileWriter(file);

char [] name = {'java' ,'開'',發'};

fw.write(name);

fw.close();

5.讀取字符流

FileReader fr= new FileReader(file);

char [] book = new char[4];

fr.close();

6.將文件作為輸入對象:

import java.io.File;

import java.util.Scanner;

public class MyClass {

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

File p = new File("C:\\Users\\Administrator\\Desktop\\java\\java\\java1\\src\\main\\java\\day8\\xt.txt");

Scanner console = new Scanner(p);

while (console.hasNext()){

String input = console.next();

System.out.println(input);

}

console.close();

}

運行結果:

xt.txt中的內容:

四:練習 實現密碼解鎖功能

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

public class FileOperation {

public static final String PATH= "C:\\Users\\Administrator\\Desktop\\java\\java\\java1\\src\\main\\java\\day8\\Demo1/pwd.txt";

String password;

//單例模式

public static final FileOperation instance = new FileOperation();

private FileOperation(){

try {

load();

}catch (IOException e){

System.out.println("io 異常");

}

}

public void load() throws IOException {

FileInputStream fis = new FileInputStream(PATH);

byte[] pwd = new byte[4];

int count = fis.read(pwd);

if (count == -1){

password = null;

}else{

password = new String(pwd);

}

fis.close();

}

public void save(String password){

try {

FileOutputStream fos = new FileOutputStream(PATH);

fos.write(password.getBytes());

fos.close();

} catch (IOException e){

System.out.println("io異常");

}

}

}

import java.util.Scanner;

public class MyClass {

public static void main(String[] args){

boolean logined =false;

//判斷是否已經登錄

String password = FileOperation.instance.password;

if (password != null){

logined = true;

}

//提示用戶操作

String alert;

if (logined) {

alert = "請輸入密碼";

} else {

alert = "請設置密碼";

}

System.out.println(alert);

String firt = null;

int wrongTime = 3;

while (wrongTime > 0) {

//接收用戶輸入

Scanner scanner = new Scanner(System.in);

String inputPassword = scanner.next();

//判斷操作

if (logined) {

//已經登陸過 直接比較

if (password.equals(inputPassword)) {

System.out.println("解鎖成功");

break;

} else {

System.out.println("解鎖失敗 請重新輸入");

wrongTime--;

}

}else{

//沒有登陸過 在設置密碼

//判斷是設置密碼的第一次還是第二次

if (firt == null){

//第一次 保存第一次輸入的密碼

firt = inputPassword;

System.out.println("請確認密碼 ");

}else{

//第二次 比較兩次輸入的密碼是否相同

if (firt.equals(inputPassword)){

System.out.println("設置密碼成功");

//保存設置的密碼

FileOperation.instance.save(firt);

break;

}else{

System.out.println("兩次密碼不一致 請重新設置密碼:");

firt = null;

wrongTime--;

}

}

}

scanner.nextLine();

}

}

}

創建刪除文件

tring content = "Hello World";

// 第一種方法:根據文件路徑和文件名

String path = "F:\\test";

String filename = "test.txt";

File myFile = new File(path,filename);

// 第二種方法

String file = "F:\\test\\test.txt";

File myFile = new File(file);

if (!myFile.exists()) {

// 創建文件(前提是目錄已存在,若不在,需新建目錄即文件夾)

myFile.createNewFile();

// 刪除文件

myFile.delete();

}

寫入文件

// 第一種:字節流FileOutputStream

FileOutputStream fop = new FileOutputStream(myFile);

byte[] contentInBytes = content.getBytes();

fop.write(contentInBytes);

fop.flush();

fop.close();

// 第二種:FileWriter(參數true為追加內容,若無則是覆蓋內容)

FileWriter fw = new FileWriter(myFile,true);

fw.write(content);

fw.close();

// 第三種:BufferedWriter

BufferedWriter bw = new BufferedWriter(new FileWriter(myFile,true));

bw.write(content);

bw.flush();

bw.close();

// 第四種:打印流PrintStream和PrintWriter

// 字節打印流:PrintStream

// 字符打印流:PrintWriter

PrintWriter pw = new PrintWriter(new FileWriter(myFile,true));

pw.println(content); // 換行

pw.print(content); // 不換行

pw.close();

// 常用BufferedWriter和PrintWriter

讀取文件

FileInputStream

// 第一種:以字節為單位讀取文件,常用于讀二進制文件,如圖片、聲音、影像等文件。

InputStream in = new FileInputStream(myFile);

// 一次讀一個字節

int tempbyte;

while ((tempbyte = in.read()) != -1) {

System.out.write(tempbyte);

}

in.close();

// 一次讀多個字節

int byteread = 0;

byte[] tempbytes = new byte[100];

ReadFromFile.showAvailableBytes(in);

while ((byteread = in.read(tempbytes)) != -1) {

S ystem.out.write(tempbytes, 0, byteread);

}

// System.out.write()方法是字符流,System.out.println()方法是字節流

InputStreamReader

// 第二種:以字符為單位讀取文件,常用于讀文本,數字等類型的文件

Reader reader = new InputStreamReader(new FileInputStream(myFile));

// 一次讀一個字節

int tempchar;

while ((tempchar = reader.read()) != -1) {

// 對于windows下,\r\n這兩個字符在一起時,表示一個換行。

// 但如果這兩個字符分開顯示時,會換兩次行。

// 因此,屏蔽掉\r,或者屏蔽\n。否則,將會多出很多空行。

if (((char) tempchar) != '\r') {

System.out.print((char) tempchar);

}

}

reader.close();

// 一次讀多個字節

char[] tempchars = new char[30];

int charread = 0;

// 讀入多個字符到字符數組中,charread為一次讀取字符數

while ((charread = reader.read(tempchars)) != -1) {

// 同樣屏蔽掉\r不顯示

if ((charread == tempchars.length) && (tempchars[tempchars.length - 1] != '\r')) {

System.out.print(tempchars);

} else {

for (int i = 0; i < charread; i++) {

if (tempchars[i] == '\r') {

continue;

} else {

System.out.print(tempchars[i]);

}

}

}

}

BufferedReader

// 第三種:以行為單位讀取文件,常用于讀面向行的格式化文件

BufferedReader reader = new BufferedReader(new FileReader (myFile));

String tempString = null;

int line = 1;

// 一次讀入一行,直到讀入null為文件結束

while ((tempString = reader.readLine()) != null) {

// 顯示行號

System.out.println("line " + line + ": " + tempString);

line++;

}

reader.close();

// 常用BufferedReader

文件函數

//判斷文件是否存在

myFile.exists()

//讀取文件名稱

myFile.getName()

//讀取文件路徑(相對路徑)

myFile.getPath()

//讀取文件絕對路徑

myFile.getAbsolutePath()

//讀取文件的父級路徑

new File(myFile.getAbsolutePath()).getParent()

//讀取文件的大小

myFile.length()

//判斷文件是否被隱藏

myFile.isHidden()

//判斷文件是否可讀

myFile.canRead()

//判斷文件是否可寫

myFile.canWrite()

//判斷文件是否為文件夾

myFile.isDirectory()

這個練習相比而言比較簡單,答案我就不公布,希望大家不忘初心,每天跟著腳步走,有時候,在電腦前坐久了,腰酸背痛,在學習的同時不要忘記運動呀各位,身體是革命的本錢呀~~~~~

總結

以上是生活随笔為你收集整理的文件操作函数java_java中文件的操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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