`
神说要好好学习
  • 浏览: 5798 次
  • 性别: Icon_minigender_2
最近访客 更多访客>>
社区版块
存档分类
最新评论

IO文件处理

 
阅读更多
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流.pdf

    Java 中文件 IO 流 Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写...在 Java 中,文件 IO 流操作是非常重要的,掌握文件 IO 流操作可以帮助我们更好地处理文件相关的任务。

    Linux文件IO跟标准IO总结

    4. **适用场景**:标准IO适合文本处理和简单文件操作,而文件IO更适合底层系统编程或高效IO操作。 为了更好地理解和对比这两种IO方式,可以参考以下资源: - **标准IO跟文件IO区别.pdf**:这个文档可能详细分析了...

    io操作复制文件

    在Java编程语言中,IO(Input/Output)操作是处理数据输入和输出的关键部分,尤其在文件操作中显得尤为重要。本篇文章将详细讲解如何使用Java的IO流进行文件复制。 一、基本概念 IO流是Java中处理输入输出的基础,...

    fileupload commons-io上传文件

    Apache Commons IO和Commons FileUpload两个库为开发者提供了强大的文件处理能力,特别是针对文件上传操作。这两个库是Java社区广泛使用的开源组件,它们简化了原本复杂的HTTP多部分请求解析过程。 Apache Commons ...

    IO文件流操作

    本篇文章将详细阐述IO文件流的基本概念、分类、常用类以及如何进行输入输出操作。 一、基本概念 文件流是Java中的一个抽象概念,它代表了数据从源到目的地的传输通道。文件流分为两种类型:输入流(Input Stream)...

    标准输入输出和文件IO的区别

    标准IO库处理很多细节,例如缓存分配,以优化长度执行IO等。标准IO提供了三种类型的缓存:全缓存、行缓存和不带缓存。全缓存是当填满标准IO缓存后才进行实际的IO操作。行缓存是当输入或输出中遇到新行符时,标准IO库...

    使用io实现文件上传

    在IT行业中,文件上传是一个常见的功能,特别是在Web应用和服务器端编程中。本文将深入探讨如何使用Java的I/O...同时,考虑到实际应用中的复杂性和安全性,开发者需要对HTTP协议、文件处理以及异常处理有深入的理解。

    文件IO.zip

    总结,文件IO是软件开发中不可或缺的一部分,理解并熟练掌握文件的读写操作、错误处理以及高效利用文件系统功能,能极大地提高代码的稳定性和效率。通过学习和实践,你将能够灵活地处理各种文件相关的任务。

    文件IO编程总结

    - 错误处理:文件IO操作可能会失败,例如文件不存在、无权限等。因此,我们需要捕获并处理这些异常。 - 缓冲区:为了提高效率,大多数编程语言都会在内存中设置缓冲区,一次性处理大块数据。这可能导致数据的延迟...

    java io读取文件

    在Java编程语言中,`IO`(Input/Output)是处理数据输入和输出的核心部分,尤其是在处理大数据量文件时显得尤为重要。Java IO API提供了一系列类和接口,使得开发者能够高效地读取、写入和操作文件。下面我们将深入...

    IO文件读取

    自Java 1.4引入NIO后,我们可以使用`java.nio`包,它提供了通道(Channels)和缓冲区(Buffers)的概念,能进行非阻塞I/O操作,适用于高性能的网络编程和大文件处理: ```java FileChannel fc = FileChannel.open...

    linux IO 系统的开销比较(文件逆序)

    在Linux操作系统中,I/O(Input/Output)操作是计算机与外部设备交互的关键部分,尤其在处理大量数据时,如文件操作。本话题主要探讨在Linux环境下,针对文件逆序操作的不同I/O策略的性能比较。我们将分析四种不同的...

    通过IO流把文件传到前端并下载.zip

    这个场景通常涉及到服务器端的文件处理、HTTP响应的构建以及前端的交互。在这个过程中,IO流扮演着关键角色,它允许程序高效地读取和写入数据。下面我们将深入探讨这个过程中的关键知识点。 1. **Java IO流**: ...

    文件IO学习笔记

    在IT领域,文件I/O(Input/Output)是程序与外部数据存储设备交互的重要部分,无论是读取配置文件、处理用户输入,还是保存程序运行结果,都离不开文件I/O操作。本篇学习笔记将深入探讨文件I/O的基本概念、常见API、...

    Java基于IO流读取文件的方法

    在Java编程中,IO流(Input/Output Stream)是处理数据输入与输出的核心机制。...当然,Java IO库提供了许多其他流类型和高级功能,例如处理压缩文件、网络流等,可以根据实际需求选择合适的方法。

    java 使用IO流实现文件的复制

    IO(Input/Output)流是Java提供的一种处理输入输出数据的方式,包括读取和写入文件。本篇文章将详细介绍如何使用Java的IO流来实现文件的复制。 首先,我们需要了解Java中的IO流体系。Java的IO库基于流的概念,流...

    Android文件IO操作

    总结,Android的文件IO操作提供了丰富的API来处理各种数据存储需求。理解这些类和接口的工作原理对于构建高效、可靠的应用程序至关重要。通过合理选择和组合不同的流,开发者可以实现高性能的数据读写操作,同时确保...

    IO-Link 全局库文件( MASTER 和 DEVICE)FB50001及说明.zip

    这份文档可能涵盖了如何导入全局库文件,如何在编程环境中调用FB50001,如何配置IO-Link Master与Device的连接,以及如何处理可能出现的错误和故障。 总的来说,这个压缩包提供了一套完整的解决方案,帮助工程师...

    java Socket Thread IO 大文件下载上传整合

    在大文件处理中,通常使用缓冲流(如`BufferedInputStream`和`BufferedOutputStream`)来提高性能,减少系统调用次数。同时,`FileInputStream`和`FileOutputStream`用于与文件交互,`Socket`的`getInputStream()`和...

Global site tag (gtag.js) - Google Analytics