JDK7 中Files类对文件的读写操作大概可以分为:
1. 读取和写入所有字节。
/** * Read all bytes from a file. * * @param path * @return * @throws IOException */ public static byte[] readAllBytes(Path path) throws IOException { return Files.readAllBytes(path); } /** * Write all bytes to a file. * * @param path * @param bytes * @param option * @throws IOException */ public static void writAllBytes(Path path, byte[] bytes, OpenOption option) throws IOException { Files.write(path, bytes, option); }
这两个方法要求文件不能够太大,如果文件大小,size > (long)Integer.MAX_VALUE,throw new OutOfMemoryError("Required array size too large");
2.读取或写入所有的行。
/** * Read all lines from a file. * * @param path * @param cs * @return * @throws IOException */ public static List<String> readAllLines(Path path, Charset cs) throws IOException { return Files.readAllLines(path, cs); } /** * Write all lines to a file. * * @param path * @param lines * @param cs * @param option * @throws IOException */ public void writeAllLines(Path path, List<String> lines, Charset cs, OpenOption option) throws IOException { Files.write(path, lines, cs, option); }
这两个方法也是一次性操作所有的字节,对于读操作,BufferedReader逐行读取。对于写操作使用BufferedWriter逐行向文件写入。对于大文件这个方法也处理不来。
3.通过Buffered Stream I/O 读写。
/** * Reading a File by Using Buffered Stream I/O * * @param path * @param cs * @return * @throws IOException */ public static List<String> readByBufferedStream(Path path, Charset cs) throws IOException { BufferedReader reader = null; try { reader = Files.newBufferedReader(path, cs); String line = null; List<String> lines = new ArrayList<String>(); while ((line = reader.readLine()) != null) { lines.add(line); } return lines; } catch (IOException e) { throw (e); } finally { if (reader != null) reader.close(); } } /** * Writing a File by Using Buffered Stream I/O * * @param path * @param lines * @param cs * @param options * @throws IOException */ public static void writeByBufferedStream(Path path, List<String> lines, Charset cs, OpenOption options) throws IOException { BufferedWriter writer = null; try { writer = Files.newBufferedWriter(path, cs, options); for (String line : lines) { writer.write(line); } } catch (IOException e) { throw (e); } finally { if (writer != null) writer.close(); } }
4.通过stream I/O读写文件
/** * Reading a File by Using Stream I/O * * @param path * @return * @throws IOException */ public static List<String> readByStream(Path path) throws IOException { List<String> lines = new ArrayList<>(); InputStream in = null; BufferedReader reader = null; try { in = Files.newInputStream(path, StandardOpenOption.READ); reader = new BufferedReader(new InputStreamReader(in)); String line = null; while ((line = reader.readLine()) != null) { lines.add(line); } } catch (IOException e) { throw (e); } finally { if (in != null) { in.close(); } if (reader != null) { reader.close(); } } return lines; } /** * Write to a file by Stream I/O * * @param lines * @param path * @param options * @param cs * @throws IOException */ public static void writeByStream(List<String> lines, Path path, Charset cs, OpenOption... options) throws IOException { OutputStream out = null; try { out = new BufferedOutputStream(Files.newOutputStream(path, options)); for (String line : lines) { out.write(line.getBytes(cs), 0, line.length()); } } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) out.close(); } }
5.通过Channel I/O读写文件
/** * Read or write by Using Channel I/O * * @param path * @param options * @throws IOException */ public static void readAndWriteByChannel(Path readPath, Path writePath) throws IOException { ByteChannel rbc = null; ByteChannel wbc = null; try { if (!Files.exists(writePath, LinkOption.NOFOLLOW_LINKS)) { Files.createFile(writePath); } rbc = Files.newByteChannel(readPath, StandardOpenOption.READ); wbc = Files.newByteChannel(writePath, StandardOpenOption.APPEND); ByteBuffer buf = ByteBuffer.allocate(10); String encoding = System.getProperty("file.encoding"); while (rbc.read(buf) > 0) { System.out.println("before rewind:\n" + buf); buf.rewind(); System.out.println("after rewind:\n" + buf); CharBuffer cb = Charset.forName(encoding).decode(buf); buf.rewind(); wbc.write(buf); System.out.println(cb); System.out.println("before flip:\n" + buf); buf.flip(); System.out.println("after flip:\n" + buf); } } catch (IOException e) { System.out.println("caught exception: " + e); e.printStackTrace(); } finally { if (rbc != null) { rbc.close(); } if (wbc != null) { rbc.close(); } } }
相关推荐
【Java学习笔记】 在Java的学习旅程中,深入理解其核心概念是至关重要的。Java是一种广泛使用的面向对象的编程语言,以其跨平台性、高效性和稳定性而受到青睐。本笔记集合将带你逐步走进Java的世界,从基础语法到...
这篇学习笔记将带你初探这个领域,适合新手入门。我们将讨论如何使用Java进行文件的读取、写入以及一些常见的应用场景。 首先,Java提供了java.io包,其中包含了许多类用于处理输入输出,如File类、FileReader/...
文件和IO操作是任何编程语言的基础,Java提供了丰富的类库支持文件读写,如File、BufferedReader和PrintWriter。网络编程在Java中也很常见,Socket编程允许你创建客户端和服务器应用程序。 Java的泛型提供了类型...
本篇学习笔记将深入探讨文件I/O的基本概念、常见API、操作模式以及一些实用技巧,旨在帮助初学者快速入门。 首先,我们来了解一下什么是文件I/O。在计算机系统中,文件I/O是指应用程序通过操作系统提供的接口,与...
在输入/输出(I/O)和文件操作方面,读者将学习到如何使用File类进行文件的创建、读写和删除,以及流的概念,包括字节流和字符流,以及如何使用缓冲区提高效率。 网络编程也是Java的一大亮点,Java学习笔记会介绍...
Java IO是Java编程语言中用于输入/输出操作的重要部分,它提供了一系列的类和方法来处理数据的读写,文件的创建、删除以及流的管理等。以下是对标题和描述中涉及的知识点的详细说明: 1. **文件对象的生成**: 在...
本教程详细讲解了这些知识点,并配以代码示例和笔记,旨在帮助学习者逐步掌握Java I/O流的使用,无论你是初学者还是有一定经验的开发者,都能从中受益。通过深入学习和实践,你将能够熟练地处理各种数据输入输出场景...
【Java IO操作详解】 在Java编程中,IO(Input/Output)操作是处理数据输入与输出的核心技术。Java-IO操作共19页的笔记详细介绍了这一关键领域,旨在帮助...这19页的学习笔记将是你掌握Java IO操作的重要参考资料。
在Java编程中,文件操作是常见的任务之一,包括创建、读写和管理文件。这篇2010年6月11日的Java代码笔记主要关注的...对于初学者来说,这是一个很好的起点,可以进一步深入学习Java I/O系统以及更高级的文件操作技术。
10. **文件操作**:Java提供了File类来处理文件和目录,如创建、删除、移动和读写文件。 11. **网络编程**:Java的Socket和ServerSocket类可用于网络通信,实现客户端-服务器模式的应用。 12. **反射机制**:反射...
`File`类是Java I/O系统中的基石,它提供了一种抽象的方式来表示文件和目录。在不同的操作系统上,文件系统的路径表示方式可能不同,例如Windows使用反斜杠(\)而Linux使用正斜杠(/)。`File`类提供了许多方法来...
Java I/O流(如RandomAccessFile、FileInputStream、FileOutputStream)为程序读写文件提供了方法。Java还提供了对网络通信的支持,比如Socket编程。 Java中的线程是程序执行流的最小单位,提供并行计算的能力。...
Java学习笔记概述 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems开发,现在由甲骨文公司维护。它的设计目标是具有简单性、面向对象、健壮性、安全性、可移植性和高性能等特性。本笔记主要围绕Java的...
Java NIO(New Input/Output)是Java标准库在JDK 1.4引入的一组新的I/O API,它提供了一种不同于传统IO的高效、非阻塞的I/O操作方式。NIO的核心概念包括Channel、Buffer和Selector,它们共同构建了一个与操作系统...
笔记会探讨File类和相关流的使用,以及文件路径和I/O操作的细节。 ### 5. IO流(5:IO Stream-Java API 实战.md) Java的I/O流系统是处理输入输出的强大工具,适用于处理各种数据源。笔记会讲解字节流和字符流的...
- 文件操作:File类和FileInputStream/FileOutputStream用于文件的读写操作。 - NIO(New I/O):非阻塞I/O模型,适用于大量并发连接的场景。 8. **异常处理** - 自定义异常:了解如何创建和抛出自定义异常,...
【Java学习笔记全程详解】 Java作为一种广泛应用于企业级开发、移动应用、大数据处理等领域的编程语言,其学习过程涵盖了许多核心概念和技术。这份"我的Java学习笔记"详细记录了作者在学习Java过程中积累的心得体会...
总的来说,这份“java学习笔记”涵盖了Java编程的关键知识点,包括但不限于基本语法、面向对象特性、集合框架、I/O操作、网络编程和异常处理。对于初学者而言,通过深入学习和实践,可以逐步掌握这个强大的编程工具...
这份“Java学习笔记(必看经典)”涵盖了Java语言的基础到进阶内容,对于想要深入理解Java的开发者来说是一份宝贵的资源。 首先,Java语言基础包括语法结构、数据类型、变量、运算符、流程控制等。Java支持两种主要的...