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

歡迎訪問 生活随笔!

生活随笔

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

java

java 类持久化_Java 持久化之 -- IO 全面整理(看了绝不后悔)

發(fā)布時間:2023/12/2 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 类持久化_Java 持久化之 -- IO 全面整理(看了绝不后悔) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄:

一、java io 概述

什么是IO?

IO包括輸入流和輸出流,輸入流指的是將數(shù)據(jù)以字符或者字節(jié)形式讀取到內(nèi)存 分為字符輸入流和字符輸入流

輸入流指的是從內(nèi)存讀取到外界 ,分為字符輸入流和字節(jié)輸出流

Java IO即Java 輸入輸出系統(tǒng)。不管我們編寫何種應(yīng)用,都難免和各種輸入輸出相關(guān)的媒介打交道,其實和媒介進行IO的過程是十分復(fù)雜的,這要考慮的因素特別多,比如我們要考慮和哪種媒介進行IO(文件、控制臺、網(wǎng)絡(luò)),我們還要考慮具體和它們的通信方式(順序、隨機、二進制、按字符、按字、按行等等)。Java類庫的設(shè)計者通過設(shè)計大量的類來攻克這些難題,這些類就位于java.io包中。

什么是流?

在Java IO中,流是一個核心的概念。流從概念上來說是一個連續(xù)的數(shù)據(jù)流。你既可以從流中讀取數(shù)據(jù),也可以往流中寫數(shù)據(jù)。流與數(shù)據(jù)源或者數(shù)據(jù)流向的媒介相關(guān)聯(lián)。在Java IO中流既可以是字節(jié)流(以字節(jié)為單位進行讀寫),也可以是字符流(以字符為單位進行讀寫)

二、Java IO類庫的框架

2.1 Java IO的類型

雖然java IO類庫龐大,但總體來說其框架還是很清楚的。從是讀媒介還是寫媒介的維度看,Java IO可以分為:

1.?輸入流:InputStream和Reader

2.?輸出流:OutputStream和Writer

而從其處理流的類型的維度上看,Java IO又可以分為:

1.?字節(jié)流:InputStream和OutputStream

2.?字符流:Reader和Writer

01:File

創(chuàng)建文件 ??刪除文件 修改文件 刪除文件信息

02:字節(jié)流InputStream ???????????OutputStream基類(父類)

03:字符流Reader ???????????????Writer

04:緩沖流BufferReader ??????????BufferWriter依賴于Reader ?Writer

05:二進制流DataInputStream ???????DataOutputStream依賴于InputStream OutputStream

06:序例化objectInputStream ?????ObjectOutputStream依賴于InputStream OutputStream

我們的程序需要通過InputStream或Reader從數(shù)據(jù)源讀取數(shù)據(jù),然后用OutputStream或者Writer將數(shù)據(jù)寫入到目標媒介中。其中,InputStream和Reader與數(shù)據(jù)源相關(guān)聯(lián),OutputStream和writer與目標媒介相關(guān)聯(lián)。 以下的圖說明了這一點:

三、Java IO的基本用法

3.1 Java IO :字節(jié)流(字節(jié)流對應(yīng)的類應(yīng)該是InputStream和OutputStream)

例1,用字節(jié)流寫文件

packagecom.dzq;import java.io.*;/*** 字節(jié)流 InputStream OutputStream*/

public classByteDemo {public static voidmain(String[] args) {//創(chuàng)建輸入流和輸出流對象

InputStream inputStream=null;

OutputStream outputStream=null;try{

inputStream=new FileInputStream("e:/aaa.txt");//true代表是否向文件拼接,不能刪除之前的內(nèi)容

outputStream=new FileOutputStream("e:/aaa.txt",true);//向文件寫入內(nèi)容

outputStream.write("54321".getBytes());//read方法0-255,如果流讀到了最后,將返回-1

int num=0;//int -1 字符串 null

while ((num=inputStream.read())!=-1){

System.out.println((char)num);

}

}catch(Exception e) {

e.printStackTrace();

}try{

inputStream.close();

outputStream.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

3.2 Java IO :字符流(字符流對應(yīng)的類應(yīng)該是Reader和Writer)

例3,用字符流寫文件

packagecom.dzq;import java.io.*;/** 字符流 Reader Writer*/

public classCharDemo{public static voidmain(String[] args) {//創(chuàng)建字符流輸出和輸入

Reader reader=null;

Writer writer=null;try{

reader=new FileReader("e:/aaa.txt");

writer=new FileWriter("e:/aaa.txt",true);

writer.write("我愛我家!");

writer.write("我愛我家?");

writer.write("我愛我家!!");

writer.write("我愛我家??");

writer.flush();

writer.write("我愛我家!!!!");

writer.close();//讀取//創(chuàng)建一次性讀取多個字符

char[] bytes =new char[1024];int num=0;

StringBuffer stringBuffer=newStringBuffer();while((num=reader.read(bytes))!=-1){

stringBuffer.append(bytes);

}

System.out.println(bytes);

}catch(Exception e) {

e.printStackTrace();

}finally{try{

writer.close();

reader.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}

3.3 Java IO ?:二進制流(DataInputStream DataOutputStream依賴于InputStream和OutputStream)

packagecom.dzq;import java.io.*;/**二進制流 DataInputStream DataOutputStream*/

public classDataDemo {public static voidmain(String[] args) {//創(chuàng)建輸入流和輸出流對象

InputStream inputStream=null;

OutputStream outputStream=null;

DataInputStream dataInputStream=null;

DataOutputStream dataOutputStream=null;try{//獲取輸入流

inputStream=new FileInputStream("e:/aaa.txt");

dataInputStream=new DataInputStream(inputStream);//封裝//獲取輸出流

outputStream=new FileOutputStream("e:/aaa.txt");

dataOutputStream=newDataOutputStream(outputStream);//讀取

int num=0;while ((num=dataInputStream.read())!=-1){

dataOutputStream.write(num);//復(fù)制

}

}catch(Exception e) {

e.printStackTrace();

}finally{try{

dataOutputStream.close();

dataInputStream.close();

outputStream.close();

inputStream.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}

3.4 Java IO(緩沖流BufferReader ?BufferWriter依賴于Reader 和Writer)

packagecom.dzq;import java.io.*;/***緩沖流 BufferReader BufferWriter*/

public classBufferDemo {public static voidmain(String[] args) {//創(chuàng)建字符流輸出和輸入

Reader reader = null;

Writer writer= null;

BufferedReader bufferReader=null;

BufferedWriter bufferedWriter=null;try{//寫入

writer=new FileWriter("e:/aaa.txt") ;

bufferedWriter=new BufferedWriter(writer);//封裝

bufferedWriter.write("我愛我家1");

bufferedWriter.write("我愛我家2");

bufferedWriter.write("我愛我家3");

bufferedWriter.newLine();//換行

bufferedWriter.write("我愛我家4");

reader.close();

bufferedWriter.close();//如果不關(guān)閉后兩行出不來//讀取

reader=new FileReader("e:/aaa.txt") ;

bufferReader=new BufferedReader(reader);//封裝//拼接

String line=null;

StringBuffer stringBuffer=newStringBuffer();while((line=bufferReader.readLine())!=null){

stringBuffer.append(line);

}

System.out.println(stringBuffer.toString());

}catch(Exception e) {

e.printStackTrace();

}finally{try{

bufferReader.close();

reader.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}

3.5 Java IO序列化和非序列化

User類:

packagecom.cd;importjava.io.Serializable;public class User implementsSerializable{publicString username;publicString password;publicString getUsername() {returnusername;

}public voidsetUsername(String username) {this.username =username;

}publicString getPassword() {returnpassword;

}public voidsetPassword(String password) {this.password =password;

}publicUser(String username, String password) {this.username =username;this.password =password;

}publicUser(){

}

}

各方法:

packagecom.cd;/*** 序列化和非序列化*/

import java.io.*;importjava.util.Scanner;public classObjectDemo {static Scanner input=newScanner(System.in);//創(chuàng)建輸出流和輸入流

static InputStream inputStream=null;static OutputStream outputStream=null;static ObjectInputStream objectInputStream=null;static ObjectOutputStream objectOutputStream=null;public static voidmain(String[] args) {//登錄

Login();//注冊

register();

}//注冊

private static voidregister() {

User user=newUser();

System.out.println("請輸入你的用戶名");

user.setUsername(input.next());

System.out.println("請輸入你的密碼");

user.setPassword(input.next());try{

outputStream=new FileOutputStream("e:/aaa.txt");

objectOutputStream=newObjectOutputStream(outputStream);//把對象輸出到文件中

objectOutputStream.writeObject(user);

}catch(Exception e) {

e.printStackTrace();

}finally{try{

objectOutputStream.close();

outputStream.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}//登錄

private static voidLogin() {try{

inputStream=new FileInputStream("e:/user.txt");

objectInputStream=newObjectInputStream(inputStream);//讀取對象

User user=(User) objectInputStream.readObject();

System.out.println(user);

}catch(Exception e) {

e.printStackTrace();

}finally{try{

objectInputStream.close();

inputStream.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}

3.6Java IO :字節(jié)流轉(zhuǎn)換為字符流(InputStreamReader)

public static void convertByteToChar() throwsIOException{

File file= new File( "d:/test.txt");//獲得一個字節(jié)流 InputStream is= new FileInputStream( file);//把字節(jié)流轉(zhuǎn)換為字符流,其實就是把字符流和字節(jié)流組合的結(jié)果。

Reader reader= newInputStreamReader( is);char [] byteArray= new char[( int) file.length()];int size=reader.read( byteArray);

System. out.println("大小:"+size +";內(nèi)容:" +newString(byteArray));

is.close();

reader.close();

}

3.7 File 操作文件

DEMO:

public classFileDemo

{static Scanner input =newScanner(System.in);public static voidmain( String[] args )

{

System.out.println("***********歡迎進入文件操作系統(tǒng)*******************");

System.out.println(" *******************1:創(chuàng)建文件*******************");

System.out.println("*******************2:刪除文件*******************");

System.out.println("*******************3:修改文件*******************");

System.out.println("*******************4:創(chuàng)建文件夾*******************");

System.out.println("*******************5:刪除文件夾*******************");

System.out.println("*******************6:查詢文件夾下所有的列表*******************");int choose =input.nextInt();switch(choose){case 1://創(chuàng)建文件

createNewFile();break;case 2://刪除文件

deleteNewFile();break;case 3://修改文件

updateNewFile();break;case 4://創(chuàng)建文件夾

mkdirs();break;case 5://刪除文件夾

deletemkdirs();break;case 6://查詢文件夾下所有的列表

findFileList();break;

}

}

創(chuàng)建文件

private static voidcreateNewFile()

{

System.out.println("請輸入文件的名稱:(默認為E:/)");

String fileName=input.next();//創(chuàng)建文件

File file=new File("E:/"+fileName);//默認的路徑

if(file.exists()){

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

}else{try{boolean flag =file.createNewFile();if(flag){

System.out.println("文件夾創(chuàng)建成功");

}else{

System.out.println("文件夾創(chuàng)建失敗");

}

}catch(IOException e) {

e.printStackTrace();

}

}

}

刪除文件

private static voiddeleteNewFile()

{

System.out.println("請輸入你要刪除的文件名稱:(默認為E:/)");

String fileName=input.next();//創(chuàng)建File對象

File file =new File("E:/"+fileName);if(file.exists()){boolean flag =file.delete();if(flag)

{

System.out.println("刪除成功");

}else{

System.out.println("刪除失敗");

}

}else{

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

}

}

修改文件

private static voidupdateNewFile()

{

System.out.println("請你輸入需要修改的文件的名稱:(默認為E:/)");

String oldFileName=input.next();

System.out.println("請你輸入文件的新名稱:(默認為E:/)");

String newFileName=input.next();//創(chuàng)建File對象

File oldFile=new File("E:/"+oldFileName);

File NewFile=new File("E:/"+newFileName);if(oldFile.renameTo(NewFile)){

System.out.println("修改成功");

}else{

System.out.println("修改失敗");

}

}

創(chuàng)建文件夾

private static voidmkdirs() {

System.out.println("請輸入你要創(chuàng)建的文件名稱:(默認為E:/)");

String fileName=input.next();//創(chuàng)建File對象

File file =new File("E:/"+fileName);if(file.mkdirs()){

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

}else{

System.out.println("創(chuàng)建失敗");

}

}

刪除文件夾

一:刪除文件夾的方法(先刪除文件夾里面的東西在刪除文件)

public static voiddelFolder(String folderPath) {try{

delAllFile(folderPath);//刪除完里面所有內(nèi)容

String filePath =folderPath;

filePath=filePath.toString();

java.io.File myFilePath= newjava.io.File(filePath);

myFilePath.delete();//刪除空文件夾

} catch(Exception e) {

e.printStackTrace();

}

}

二:刪除文件夾的方法

public static booleandelAllFile(String path) {boolean flag = false;

File file= newFile(path);if (!file.exists()) {returnflag;

}if (!file.isDirectory()) {returnflag;

}

String[] tempList=file.list();

File temp= null;for (int i = 0; i < tempList.length; i++) {if(path.endsWith(File.separator)) {

temp= new File(path +tempList[i]);

}else{

temp= new File(path + File.separator +tempList[i]);

}if(temp.isFile()) {

temp.delete();

}if(temp.isDirectory()) {

delAllFile(path+ tempList[i]);//先刪除文件夾里面的文件

delFolder(path + tempList[i]);//再刪除空文件夾

flag = true;

}

}returnflag;

}

三:刪除文件夾的終極方法

private static voiddeletemkdirs() {

System.out.println("請輸入你要刪除的文件夾名稱:(默認為E:/)");

String fileName=input.next();//創(chuàng)建File對象

File file =new File("E:/"+fileName);if(file.exists()){boolean flag = delAllFile("E:/qqq");if(flag)

{

System.out.println("刪除失敗");

}else{

file.delete();

System.out.println(" 刪除成功");

}

}else{

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

}

}

總結(jié)

以上是生活随笔為你收集整理的java 类持久化_Java 持久化之 -- IO 全面整理(看了绝不后悔)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。