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

文件操作函数java_java中文件的操作前言 java 的读写操作是学 java 开发的必经之路 Java io 包中包括许多类提供许多有关文件的各个方面操作 下面就来总结下 java 的读写操作 主要内容如下 1 字节流与字符流的区别 2 文件操作 3 文件操作的具体实现 4 实战 解锁功能 一 字节流与字符流的区别

大家好,我是讯享网,很高兴认识大家。

前言: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();

}

运行结果:

9a4e480ddc07
讯享网

xt.txt中的内容:

9a4e480ddc07

四:练习 实现密码解锁功能

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()

这个练习相比而言比较简单,答案我就不公布,希望大家不忘初心,每天跟着脚步走,有时候,在电脑前坐久了,腰酸背痛,在学习的同时不要忘记运动呀各位,身体是革命的本钱呀~~~~~

小讯
上一篇 2025-02-25 14:06
下一篇 2025-01-18 08:42

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/43542.html