`
- 浏览:
4762898 次
- 性别:
- 来自:
济南
-
FileUtil .java
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.nio.ByteBuffer;
importjava.nio.MappedByteBuffer;
importjava.nio.channels.FileChannel;
/***//**
*@authorlichun
*
*TODOTochangethetemplateforthisgeneratedtypecommentgoto
*Window-Preferences-Java-CodeStyle-CodeTemplates
*/
publicclassFileUtil...{
publicstaticByteBufferreadFile(Stringfilename)throwsException
...{
FileChannelfiChannel=newFileInputStream(filename).getChannel();
MappedByteBuffermBuf;
mBuf=fiChannel.map(FileChannel.MapMode.READ_ONLY,0,fiChannel.size());
fiChannel.close();
fiChannel=null;
returnmBuf;
}
publicstaticvoidsaveFile(ByteBuffersrc,Stringfilename)throwsException
...{
FileChannelfoChannel=newFileOutputStream(filename).getChannel();
foChannel.write(src);
foChannel.close();
foChannel=null;
}
publicstaticvoidsaveFile(FileChannelfiChannel,Stringfilename)throwsIOException
...{
MappedByteBuffermBuf;
mBuf=fiChannel.map(FileChannel.MapMode.READ_ONLY,0,fiChannel.size());
FileChannelfoChannel=newFileOutputStream(filename).getChannel();
foChannel.write(mBuf);
fiChannel.close();
foChannel.close();
fiChannel=null;
foChannel=null;
}
publicstaticvoidmain(String[]args)throwsException
...{
finalStringsuffix=".txt";
finalStringfilename="bufferTemp";
finalStringsrcFile=filename+suffix;
finalStringbackupFile=filename+"-"+System.currentTimeMillis()+suffix;
ByteBufferbyteBuffer=FileUtil.readFile(srcFile);
FileUtil.saveFile(byteBuffer,backupFile);
byteBuffer=null;
}
}
TransferFile.java
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.nio.ByteBuffer;
importjava.nio.channels.FileChannel;
importjava.util.*;
/***//**
*@authorlichun
*
*TODOTochangethetemplateforthisgeneratedtypecommentgoto
*Window-Preferences-Java-CodeStyle-CodeTemplates
*/
publicclassTransferFile...{
privateStringsrcFile;
Listfiles=newArrayList();
ByteBufferbyteBuffer;
publicTransferFile()
...{
createFileNames();
}
privatevoidcreateFileNames()
...{
for(inti=0;i<10;i++)
...{
files.add(i+"");
}
}
publicListgetFiles()
...{
returnthis.files;
}
publicStringgetSrcFile()...{
returnsrcFile;
}
publicvoidsetSrcFile(StringsrcFile)...{
this.srcFile=srcFile;
}
publicvoidsaveFiles()throwsFileNotFoundException
...{
StringtempFile;
for(inti=0;i<this.files.size();i++)
...{
tempFile="test-files/"+(String)files.get(i)+".txt";
System.out.println("begincreatethreadfor"+tempFile);
FileChannelfiChannel=newFileInputStream(this.srcFile).getChannel();
WriteFileThreadwriteFileThread=newWriteFileThread("writeFile",fiChannel,tempFile);
writeFileThread.start();
}
}
publicstaticvoidmain(String[]args)throwsException
...{
finalStringsrcFile="test-files/transferFile.txt";
TransferFiletransferFile=newTransferFile();
transferFile.setSrcFile(srcFile);
transferFile.saveFiles();
}
}
WriteFileThread.java
importjava.nio.channels.FileChannel;
/***//**
*@authorlichun
*
*TODOTochangethetemplateforthisgeneratedtypecommentgoto
*Window-Preferences-Java-CodeStyle-CodeTemplates
*/
publicclassWriteFileThreadextendsThread...{
privateFileChannelfiChannel;
privateStringfileName;
publicWriteFileThread(Stringname)
...{
super(name);
}
publicWriteFileThread(Stringname,FileChannelfiChannel,StringfileName)
...{
this(name);
this.fiChannel=fiChannel;
this.fileName=fileName;
}
publicvoidsetFiChannel(FileChannelfiChannel)
...{
this.fiChannel=fiChannel;
}
publicFileChannelgetFiChannel()...{
returnfiChannel;
}
publicvoidsetFileName(StringfileName)...{
this.fileName=fileName;
}
publicStringgetFileName()...{
returnfileName;
}
publicvoidrun()
...{
System.out.println("inThread:"+this.getName());
try...{
FileUtil.saveFile(this.fiChannel,this.fileName);
}catch(Exceptione)...{
System.out.println("Thefileisnotfounded:"+fileName);
e.printStackTrace();
}
System.out.println("endThread:"+this.getName());
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
【标题】"talent-nio3.0.0备份"所指的可能是一个关于NIO(Non-blocking Input/Output)的开源项目或者框架的版本3.0.0的备份文件。NIO是Java中的一种I/O模型,它与传统的 Blocking I/O 相比,提供了更加高效的数据...
2. **文件I/O操作**: Java提供了一系列的类和接口,如`File`, `InputStream`, `OutputStream`等,用于进行文件的读写操作。在这个场景中,程序会使用这些API来复制原始的Java类文件到一个新的位置,创建备份。 3. *...
分布式读写文件系统是现代大型应用处理海量数据的关键技术之一,尤其在云计算和大数据领域中起着核心作用。本文将详细解析标题为“DistributedRW”的项目,它是一个使用Java编程语言实现的分布式读写文件系统。这个...
2. **资源消耗**:优化文件读写过程,减少电量和流量的消耗。 3. **错误处理**:提供完善的错误处理机制,确保在出现问题时能给出清晰的反馈。 4. **用户隐私**:备份的数据涉及用户隐私,必须确保数据的安全性和...
文件名列表中的“nio”可能是指一些示例代码或教程材料,它们可能包含了如何使用NIO进行文件操作、网络通信等实践示例。学习这些内容有助于将理论知识与实际编程结合起来,加深对NIO的理解。 总的来说,Java NIO是...
在处理大文件时,可以利用NIO的文件通道进行零拷贝操作,提高读写效率。 总的来说,MongoDB的开发结合NIO技术,可以构建出高性能、高并发的数据库应用。开发者不仅需要深入理解MongoDB的数据模型和操作,还要熟练...
2. **文件流**:`java.io.FileInputStream`和`java.io.FileOutputStream`是进行文件读写的基本工具。它们可以配合缓冲区(`java.io.BufferedInputStream`和`java.io.BufferedOutputStream`)提高性能,减少I/O操作...
8. **文件的备份与恢复**:为了防止数据丢失,文件系统可能需要支持备份和恢复功能,这可能涉及到日志记录和检查点技术。 9. **文件的链接**:硬链接和软链接(符号链接)是文件系统中的重要特性,它们提供了不同...
`FileInputStream`和`FileOutputStream`用于读写文件,而`BufferedReader`和`BufferedWriter`等类可以提供缓冲,提高读写效率。此外,`FileReader`和`FileWriter`用于字符流,适用于处理文本文件。 4. 保存:文件...
在实际项目中,我们还可能结合`InputStream`、`OutputStream`等类进行更复杂的文件读写操作,或者使用`NIO`(非阻塞I/O)的`Path`接口来提升文件操作的效率。总之,`File`类是Java编程中不可或缺的一部分,对于理解和...
程序通常需要读写权限来访问特定的文件或目录。Android提供了`java.io`和`java.nio`包,用于在应用内部存储、外部存储以及SD卡之间进行文件操作。同时,Android 6.0(API级别23)之后引入了运行时权限管理,这意味着...
批量替换通常涉及到编程语言中的字符串处理、文件读写以及文件遍历等技术。下面将详细介绍这一主题。 首先,批量替换的核心是查找并替换文件中的特定字符串或模式。在Windows操作系统中,我们可以使用命令行工具如`...
通过阅读源码,可以深入理解其内部机制,例如如何使用NIO进行文件读写,如何实现并发控制,以及如何进行数据序列化和反序列化等。 **5. 应用场景** LightKV适用于需要快速本地存储的应用场景,如: - 缓存用户设置...
Java的标准库提供了IO流和NIO(New IO)框架来处理文件读写。在压缩和解压缩过程中,IO流用于读取和写入文件,而NIO提供了更高效、非阻塞的数据传输方式,适用于大文件操作。 2. **Java.util.zip包**: 这个包...
- **增加冗余**:通过主从复制机制,可以实现实时的数据备份,提高数据安全性。 - **提高数据库并发**:读写分离可以显著提高系统的并发处理能力,尤其是在读操作远多于写操作的场景下。 - **减轻服务器压力**:将读...
Java可以调用操作系统级别的备份命令,或者利用Java自身的`java.nio.file.FileChannel`进行文件复制。 8. **性能优化**:对于大量文件的操作,Java的内存管理和并发处理策略至关重要。合理使用`ArrayList`、`...
其次,核心的文件操作功能实现涉及对`java.io`和`java.nio`包中类的使用,例如`File`类用于表示文件和目录,`FileInputStream`和`FileOutputStream`用于读写文件。同时,Android SDK提供了一些特定于平台的API,如`...