1.文件的基本操作:创建、删除、获取路径、获取名字。。。API里面全部都有
创建文件,文件夹是目录,不是文件(异常):
File f = new File("C:\\Users\\Admin\\Desktop/file.txt");
try {
//做什么
f.createNewFile();
} catch (Exception e) {
//异常了做什么
e.printStackTrace();
}
2.文件的复制:
①获得文件内容(读出来)→②在新的路径创建文件→③将内容复制进去(写进去)
InputStream输入流和OutputStream输出流都是抽象超类,要用他们的子类来实现:FileInputStream和FileOutputStream
每次读半个汉字,一个数字或字母
public class MyFile {
public void filecopy(){
try {
//创建文件输入流,old.txt需要原来就存在
FileInputStream fis = new
FileInputStream("H:\\old.txt");
//创建文件输出流,new.txt是自动创建的
FileOutputStream fos = new
FileOutputStream("H:\\new.txt");
//!!!!!!!!!!!!!!!!!!!!!!!!!!!
//需要从文件中读取数据,如果读到文件的末位则为read()返回值为-1
int value = fis.read();
//循环读取字节
while(value!=-1){
fos.write(value);
value = fis.read();
}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//强制输出
fos.flush();
//关闭输入输出流
fis.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
.doc复制成.txt后会乱码
3.文件的打开和保存
假设要保存的是L-System的数据,它由多个部分组成比如很多点,需要输入的序列码,还有暂停时间,角度等。而且需要保存或打开的不止一个,则需要数组或队列
①静态static:可以再类外部直接调用
②保存函数和读取函数
③用到了DataInputStream和DataOutputStream
④字符串的处理:字符串是不定长,所以处理的时候要先得到他的长度才可以
/**
* 执行文件保存的函数
* @param ls 传进来需要保存的函数
*/
public static void save(ArrayList<Lsystem> ls){
String fileName = "H:\\ioFile.abc";
byte version = 1;
int size = ls.size();//L-System的个数
try {
FileOutputStream fs = new FileOutputStream(fileName);
DataOutputStream dos = new DataOutputStream(fs);
dos.writeByte(version);//将版本号写入文件的头部
dos.writeInt(size);//保存的个数
for(int i = 0;i<ls.size();i++){//循环读入对象的数据
Lsystem s = ls.get(i);//将对象传进去
dos.writeInt(s.count);//将各个参数穿进去进行保存
dos.writeDouble(s.d);
dos.writeLong(s.t);
//处理字符串:字符串是不知道它具体有多少位的,所以就要定义它的长度
byte[] ss = s.s.getBytes();
dos.writeInt(ss.length);
dos.write(ss);
//处理自定义类
int point_size = s.p.length;//每个Lsystem拥有的点的个数
dos.writeInt(point_size);
for(int j = 0;j<point_size;j++){
dos.writeInt(s.p[j].x);
dos.writeInt(s.p[j].y);
}
}
dos.flush();
dos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 读取文件
* @return 返回的是一个得到的是保存的数据
*/
public static ArrayList<Lsystem> getData(){
String fileName = "H:\\ioFile.abc";
ArrayList<Lsystem> L_array = new ArrayList<Lsystem>();
try {
FileInputStream fis = new FileInputStream(fileName);
DataInputStream dis = new DataInputStream(fis);
byte version = dis.readByte();
int size = dis.readInt();
for(int i = 0;i<size;i++){
int count = dis.readInt();//将各个参数读出来
double d = dis.readDouble();
long t = dis.readLong();
//读取字符串
int slength = dis.readInt();
byte[] ss = new byte[slength];
for(int j = 0;j<slength;j++){
ss[j] = dis.readByte();
}
String s = new String(ss);
//读取自定义类
int point_size = dis.readInt();//点的个数
Point[] p = new Point[point_size];
for(int j = 0;j<point_size;j++){
p[j].x = dis.readInt();
p[j].y = dis.readInt();
}
Lsystem ls = new Lsystem();
ls.count = count;
ls.p = p;
ls.d = d;
ls.s = s;
ls.t = t;
//将对象添加到队列中去
L_array.add(ls);
}
dis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return L_array;
}
分享到:
相关推荐
Java 中文件 IO 流 Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写...在 Java 中,文件 IO 流操作是非常重要的,掌握文件 IO 流操作可以帮助我们更好地处理文件相关的任务。
4. **适用场景**:标准IO适合文本处理和简单文件操作,而文件IO更适合底层系统编程或高效IO操作。 为了更好地理解和对比这两种IO方式,可以参考以下资源: - **标准IO跟文件IO区别.pdf**:这个文档可能详细分析了...
在Java编程语言中,IO(Input/Output)操作是处理数据输入和输出的关键部分,尤其在文件操作中显得尤为重要。本篇文章将详细讲解如何使用Java的IO流进行文件复制。 一、基本概念 IO流是Java中处理输入输出的基础,...
Apache Commons IO和Commons FileUpload两个库为开发者提供了强大的文件处理能力,特别是针对文件上传操作。这两个库是Java社区广泛使用的开源组件,它们简化了原本复杂的HTTP多部分请求解析过程。 Apache Commons ...
本篇文章将详细阐述IO文件流的基本概念、分类、常用类以及如何进行输入输出操作。 一、基本概念 文件流是Java中的一个抽象概念,它代表了数据从源到目的地的传输通道。文件流分为两种类型:输入流(Input Stream)...
标准IO库处理很多细节,例如缓存分配,以优化长度执行IO等。标准IO提供了三种类型的缓存:全缓存、行缓存和不带缓存。全缓存是当填满标准IO缓存后才进行实际的IO操作。行缓存是当输入或输出中遇到新行符时,标准IO库...
在IT行业中,文件上传是一个常见的功能,特别是在Web应用和服务器端编程中。本文将深入探讨如何使用Java的I/O...同时,考虑到实际应用中的复杂性和安全性,开发者需要对HTTP协议、文件处理以及异常处理有深入的理解。
总结,文件IO是软件开发中不可或缺的一部分,理解并熟练掌握文件的读写操作、错误处理以及高效利用文件系统功能,能极大地提高代码的稳定性和效率。通过学习和实践,你将能够灵活地处理各种文件相关的任务。
- 错误处理:文件IO操作可能会失败,例如文件不存在、无权限等。因此,我们需要捕获并处理这些异常。 - 缓冲区:为了提高效率,大多数编程语言都会在内存中设置缓冲区,一次性处理大块数据。这可能导致数据的延迟...
在Java编程语言中,`IO`(Input/Output)是处理数据输入和输出的核心部分,尤其是在处理大数据量文件时显得尤为重要。Java IO API提供了一系列类和接口,使得开发者能够高效地读取、写入和操作文件。下面我们将深入...
自Java 1.4引入NIO后,我们可以使用`java.nio`包,它提供了通道(Channels)和缓冲区(Buffers)的概念,能进行非阻塞I/O操作,适用于高性能的网络编程和大文件处理: ```java FileChannel fc = FileChannel.open...
在Linux操作系统中,I/O(Input/Output)操作是计算机与外部设备交互的关键部分,尤其在处理大量数据时,如文件操作。本话题主要探讨在Linux环境下,针对文件逆序操作的不同I/O策略的性能比较。我们将分析四种不同的...
这个场景通常涉及到服务器端的文件处理、HTTP响应的构建以及前端的交互。在这个过程中,IO流扮演着关键角色,它允许程序高效地读取和写入数据。下面我们将深入探讨这个过程中的关键知识点。 1. **Java IO流**: ...
在IT领域,文件I/O(Input/Output)是程序与外部数据存储设备交互的重要部分,无论是读取配置文件、处理用户输入,还是保存程序运行结果,都离不开文件I/O操作。本篇学习笔记将深入探讨文件I/O的基本概念、常见API、...
在Java编程中,IO流(Input/Output Stream)是处理数据输入与输出的核心机制。...当然,Java IO库提供了许多其他流类型和高级功能,例如处理压缩文件、网络流等,可以根据实际需求选择合适的方法。
IO(Input/Output)流是Java提供的一种处理输入输出数据的方式,包括读取和写入文件。本篇文章将详细介绍如何使用Java的IO流来实现文件的复制。 首先,我们需要了解Java中的IO流体系。Java的IO库基于流的概念,流...
总结,Android的文件IO操作提供了丰富的API来处理各种数据存储需求。理解这些类和接口的工作原理对于构建高效、可靠的应用程序至关重要。通过合理选择和组合不同的流,开发者可以实现高性能的数据读写操作,同时确保...
在大文件处理中,通常使用缓冲流(如`BufferedInputStream`和`BufferedOutputStream`)来提高性能,减少系统调用次数。同时,`FileInputStream`和`FileOutputStream`用于与文件交互,`Socket`的`getInputStream()`和...
此外,对于大文件处理,了解如何使用with语句来自动管理文件的打开和关闭也是很有必要的。 了解和掌握这些基本的Python文件IO操作是成为一名合格的Python开发者的基础,也是处理日常数据任务不可或缺的技能。在面试...