控制台程序.本例将对应于每个素数的数据以三个连续数据项的形式写入: 1.以二进制值表示的字符串长度值(最好是整型,但本例使用double类型): 2.素数值的字符串表示”Prime=nnn“,其中数字的位数明显是变化的: 3.将素数以long类型的二进制表示. 基本策略是,创建一个字节缓冲区,之后创建一系列将三种不同类型数据映射到其中的视图缓冲区.一种简单的方法是每次写入一个素数的数据. import static java.lang.Math.ceil; import static java.…
控制台程序,计算素数.创建文件路径.写文件. import static java.lang.Math.ceil; import static java.lang.Math.sqrt; import static java.lang.Math.min; import static java.nio.file.StandardOpenOption.*; import java.nio.file.*; import java.nio.channels.*; import java.nio.*; im…
控制台程序,上一条博文(PrimesToFile2)每次将一个素数写入到文件中,所以效率不是很高.最好是使用更大的缓冲区并加载多个素数. 本例重复使用三个不同的视图缓冲区加载字节缓冲区并尽可能加入更多的素数,推荐使用这种方式. import static java.lang.Math.ceil; import static java.lang.Math.sqrt; import static java.lang.Math.min; import static java.nio.file.Stan…
控制台程序,使用Formatter对象将写入文件的数据准备好. 使用Formatter对象的format()方法,将数据值格式化到视图缓冲区charBuf中. import static java.nio.file.StandardOpenOption.*; import java.nio.file.*; // Files and Path import java.nio.channels.WritableByteChannel; import java.nio.*; // ByteBuffer…
控制台程序,将一系列有用的格言写入到文件中. 本例使用通道把不同长度的字符串写入到文件中,为了方便从文件中恢复字符串,将每个字符串的长度写入到文件中紧靠字符串本身前面的位置,这可以告知在读取字符串之前字符串中存在的字符数目,也可以使用视图缓冲区来读取字符串. import static java.nio.file.StandardOpenOption.*; import java.nio.file.*; import java.nio.channels.*; import java.util.E…
控制台程序,使用单个写操作将数据从多个缓冲区按顺序传输到文件,这称为集中写(GatheringWrite)操作.这个功能的优势是能够避免在将信息写入到文件中之前将信息复制到单个缓冲区中.从每个缓冲区写入到文件中的数据有这个缓冲区的位置和限制决定. 本例会将字符串长度.字符串本身以及二进制素数值设置到单独的字节缓冲区中,另外还会将素数字符串作为本地编码的字节写入. import static java.lang.Math.ceil; import static java.lang.Math.sqr…
控制台程序,在Junk目录中将字符串“Garbage in, garbage out\n”写入到名为charData.txt的文件中. import static java.nio.file.StandardOpenOption.*; import java.nio.file.*; import java.nio.channels.*; import java.util.EnumSet; import java.io.IOException; import java.nio.ByteBuffer…
控制台程序,将一列字符串写入到文件中. import java.io.*; import java.nio.file.*; import java.nio.charset.Charset; public class WriterOutputToFile { public static void main(String[] args) { String[] sayings = {"A nod is as good as a wink to a blind horse.", "L…
控制台程序,创建一个文件并且使用通道将一些文本写入到这个文件中. import static java.nio.file.StandardOpenOption.*; import java.nio.channels.WritableByteChannel; import java.io.IOException; import java.nio.ByteBuffer; import java.util.EnumSet; import java.nio.file.*; public class Tr…
控制台程序,生成一些二进制整型值并且将它们写入到文件中. import java.nio.file.*; import java.nio.*; import java.io.*; public class StreamOutputToFile { public static void main(String[] args) { final int count = 50; // Number of values long[] fiboNumbers = {0L,0L}; // Array of 2…
控制台程序,本例读取Java基础之写文件部分(PrimesToFile2)写入的Primes.txt. 方法二:设置一个任意容量的.大小合适的字节缓冲区并且使用来自文件的字节进行填充.然后整理出缓冲区中所有的内容.这种方式的问题是:缓冲区的内容可能会在读取文件的一个数据项时半途而断.这样一来,就必须做一些工作对此进行检测并且找出下一步要做的工作,但是这比第一种方式更加有效,因为这极大减少了用于读取整个文件所需的读操作数目. 本例的关键是缓冲区类提供的compact()方法,即压缩缓冲区. imp…
控制台程序,本例读取Java基础之写文件部分(PrimesToFile2)写入的Primes.txt. 方法一:可以在第一个读操作中读取字符串的长度,然后再将字符串和二进制素数值读入到文本中.这种方式的唯一不足是:这不是一种有效读取文件的方式,因为有很多的读操作,其中的每个都读取非常少量的数据. import java.nio.file.*; import java.nio.channels.FileChannel; import java.io.IOException; import java…
控制台程序,本例读取Java基础之写文件部分(PrimesToFile)写入的primes.bin. import java.nio.file.*; import java.nio.*; import java.nio.channels.ReadableByteChannel; import java.io.IOException; public class ReadPrimes { public static void main(String[] args) { Path file = Pat…
控制台程序,使用通道从缓冲区获取数据,读取Java基础之写文件(BufferStateTrace)写入的charData.txt import java.nio.file.*; import java.nio.channels.ReadableByteChannel; import java.io.IOException; import java.nio.ByteBuffer; public class ReadAString { public static void main(String[]…
控制台程序,本例读取Java基础之写文件部分(WriterOutputToFile)写入的Saying.txt. import java.io.*; import java.nio.file.*; import java.nio.charset.Charset; public class ReaderInputFromFile { public static void main(String[] args) { Path file = Paths.get(System.getProperty("…
控制台程序,读取Java基础之读文件部分(StreamOutputToFile)写入的50个fibonacci数字. import java.nio.file.*; import java.nio.*; import java.io.*; public class StreamInputFromFile { public static void main(String[] args) { Path file = Paths.get(System.getProperty("user.home&qu…
流与文件的操作在编程中经常遇到,与C语言只有单一类型File*即可工作良好不同,Java拥有一个包含各种流类型的流家族,其数量超过60个!当然我们没必要去记住这60多个类或接口以及它们的层次结构,理解和掌握其中比较常用的类和接口即可,必要的时候查询文档或API.我们把流家族成员按照它们的使用方法来进行划分,就形成了处理字节和字符的两个单独的层次结构.                                                                          …
一.实验背景 最近在考虑一个问题:“如果快速地向文件中写入数据”,java提供了多种文件写入的方式,效率上各有异同,基本上可以分为如下三大类:字节流输出.字符流输出.内存文件映射输出.前两种又可以分为带buffer及不带buffer. 二.实验目标 通过实验找出单线程场景下文件写入效率最高的方式,并量化各种文件写入方式在效率上的差距. 三.实验设计 为减少其他环节的影响,示例代码使用循环输出同一字符串多次的方式测试整个输出环节的耗时,通过耗时.服务器资源使用情况(cpu.内存使用)等指标评判各种…
1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { System.out.println(…
分片读取文件方法: /** * 分片读取文件块 * * @param path 文件路径 * @param position 角标 * @param blockSize 文件块大小 * @return 文件块内容 */ public static byte[] read(String path, long position, int blockSize) throws Exception { // ----- 校验文件,当文件不存在时,抛出文件不存在异常 checkFilePath(path,…
对文件进行操作在编程中比较少用,但是我最近有一个任务需要用到对文件操作. 对文件有如下操作形式: 1.创建新的文件(夹) File fileName = new File("C:/myfile.txt"); fileName.createNewFile(); //创建文件 File fileName = new File("C:/myfile"); fileName.mkdir(); //创建文件夹 2.对比两个文件路径 fileName.compareTo(ano…
以下是一些依据经常使用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 当中jodd中提供的JavaUtil类中提供的方法足够我们使用,里面的方法写的很简练,比如append,read等方法,封装更好,更符合面向对象, 这里面我写的一些方法可多都是模仿jodd,从里面进行抽取出来的. /** * 获取路径目录下的全部文件 * @param path * @return */ public static File[] ge…
控制台程序,使用通道随机读写primes_backup.bin文件. import static java.nio.file.StandardOpenOption.*; import java.nio.file.*; import java.nio.channels.SeekableByteChannel; import java.io.IOException; import java.nio.ByteBuffer; import java.util.EnumSet; public class…
import java.nio.file.*; import java.nio.channels.FileChannel; import java.io.IOException; import java.nio.ByteBuffer; public class RandomFileRead { public static void main(String[] args) { Path file = Paths.get(System.getProperty("user.home")).r…
控制台程序,除了使用Files类中使用copy()方法将文件复制外,还可以使用FileChannel对象复制文件,连接到输入文件的FileChannel对象能直接将数据传输到连接到输出文件的FileChannel对象中而不涉及显式的缓冲区. 本例用来对命令行参数设定的文件进行复制.文件被复制到一个类似在原始目录下创建的备份文件中.新文件的名称通过在原始文件名称的后面附加多次“_backup”以获得唯一文件名. import static java.nio.file.StandardOpenOpt…
控制台程序,创建和删除目录以及复制和移动文件. import java.nio.file.*; import java.nio.file.attribute.*; import java.io.IOException; public class MoveAndCopyFiles { static void createSingleDirectory(Path path){ try{ Files.createDirectories(path); System.out.println("\n&quo…
控制台程序,测试文件或目录的路径. import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.attribute.BasicFileAttributes; import java.io.IOException; pu…
控制台程序,列出存储在系统中的文件的详细信息 import java.nio.file.FileStore; import java.nio.file.FileSystems; import java.nio.file.FileSystem; import java.io.IOException; public class GetFileStores{ public static void main(String[] args){ FileSystem fileSystem=FileSystem…
/** * 定义一个方法,能够删除任意文件夹,文件夹路径由键盘录入 注意:不要在C盘下做测试,请选定无用的文件夹测试! */ 1.键盘录入 private static File getfile() { //键盘录入 Scanner sc = new Scanner(System.in); System.out.println("请输入文件夹的路径:"); while(true){ //无限循环 直到输入对了结束 String str = sc.nextLine(); //把字符串封装…
FilenameFilter用于对列表中文件名的过滤,今天我们就开始java中FilenameFilter的学习.好多年了,你一直在我的伤口中幽居,我放下过天地,却从未放下过你,我生命中的千山万水,任你一一告别. java中FilenameFilter的使用 java文档对FilenameFilter的描述: Instances of classes that implement this interface are used to filter filenames. These instanc…