当前位置:网站首页>[simple implementation of file IO]
[simple implementation of file IO]
2022-07-06 00:32:00 【DJL_ new_ life】
( Click jump )
file IO example
review
- Information about document management ——File object : Traversal of file system tree 、 increase 、 Delete 、 Change 、 check
- Input 、 The output model
InputStream
The device that reads the data stream . Abstract the input device into the source of data flow
- Data is abstracted into streaming (Stream) In the form of
- Need right memory space , Store the read data : The space of a variable Or the space of an array
- EOS : Indicates that the data has been read . VS No data has been read this time
- Can be InputStream Connect with other data processing objects
OutputStream
Put the data in memory , By writing to the device of the data stream , Finally, write the data to the output device .
- When writing , To synchronize the write speed difference between memory and output device , Generally, there is a buffer (buffer) Of . Reduce the frequency of writing , Improve writing speed
- So scour the buffer (flush) Of Very important operation
- Character set (ASCII and Unicode) And character set encoding (ASCII、GBK、UTF-8)
1 Given path , Look in the file name A list of files containing the specified characters , And according to the user's choice , Decide whether to delete
Ideas :
- Start with the root of a tree , Traverse the whole tree
- Put the name of each node matching Search for conditions
- If you qualify , Just keep it File object
- After traversal , Get a group of qualified File object
- Ask the user once , The next step for these objects is to deal with objects
package com.djl.io;
/** * Scan the specified directory , And find all ordinary files whose names contain the specified characters ( Does not contain a directory ), And then ask the user whether to * Delete the file */
import java.io.File;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) throws Exception{
Scanner sc = new Scanner(System.in);
System.out.println(" Please enter the directory to scan :");
String dir = sc.nextLine();
File file = new File(dir);
if(!file.isDirectory()){
System.out.println(" The path to be scanned is not a directory or does not exist ");
return;
}
System.out.println(" Please enter the characters to be included in the file name :");
String fileName = sc.nextLine();
Deque<File> list = new ArrayDeque<>();
// This method will store the qualified file path to list in
findFile(file,fileName,list);
while (!list.isEmpty()){
File file1 = list.poll();
System.out.println(" Whether or not to delete " + file1.getAbsolutePath() + " y/n");
String pd = sc.nextLine();
if(pd.toLowerCase().equals("y")){
file1.delete();
System.out.println(" Delete successful ");
}
}
}
private static void findFile(File file, String fileName, Deque<File> list) throws Exception{
File[] files = file.listFiles();
if(files == null || files.length == 0){
return;
}
for(File f : files){
if(f.isDirectory()){
findFile(f,fileName,list);
}else {
String name = f.getName();
if(name.contains(fileName)){
list.offer(f);
}
}
}
}
}
2 Copy of a file
Given two paths : Source file path ( There must be )、 The target path ( Must not exist && Directory exists )
Source file It must be an ordinary file , Not a directory file
Ideas :
- Because it's just copying , So we don't consider the content of the document at all
- So what we have to do is : Traverse ( Read data from the source file , Write target file ) Until all the data are written
package com.djl.io;
import java.io.*;
// Copy of documents
public class Test2 {
public static void main(String[] args) throws Exception{
File oldFile = new File("D:/ resume /Java Resume of Development Engineer .docx");
File newFile = new File("D:/ resume /2/ resume .docx");
// Count the time required for replication
long sta = System.currentTimeMillis();
// Prepared bucket
byte[] bur = new byte[1024];
int count = 0;
try (InputStream is = new FileInputStream(oldFile)){
try(OutputStream os = new FileOutputStream(newFile)){
while (true){
int n = is.read(bur);
count += n;
if(n == -1){
break;
}
os.write(bur);
}
os.flush();
}
}
long end = System.currentTimeMillis();
long ms = end-sta;
double s = ms/1000.0;
System.out.println(" Copy time is :"+s+"ms");
}
}
3 Copy of a directory
Given two paths : Source file path ( There must be && Is a directory )、 The target path ( Must not exist && The parent directory does not exist )
Ideas :
if( Catalog ) : Continue to recursive + Create a directory relative to the target
if( file ): The relative position of the target , Copy files
package com.djl.io;
// Copy of directory
import java.io.*;
public class Test2_copyDir {
static File oldFile = new File("D:/ resume ");
static File newFile = new File("D:/ resume /2");
public static void main(String[] args) throws Exception{
traversal(oldFile);
}
private static void traversal(File oldFile) throws Exception{
File[] oldFiles = oldFile.listFiles();
if(oldFiles == null){
System.out.println(" The directory is empty ");
return;
}
for(File file : oldFiles){
String oldFilePath = oldFile.getCanonicalPath();
String filePath = file.getCanonicalPath();
String newFilePath = newFile.getCanonicalPath();
String rever = filePath.substring(oldFilePath.length());
newFilePath = newFilePath + rever;
File oneNewFile = new File(newFilePath);
if(file.isDirectory()){
oneNewFile.mkdir();
traversal(file);
}else if(file.isFile()){
copyFile(file,oneNewFile);
}
}
}
private static void copyFile(File file, File oneNewFile) throws Exception{
try(InputStream is = new FileInputStream(file)){
try(OutputStream os = new FileOutputStream(oneNewFile)){
while (true){
byte[] bur = new byte[1024];
int n = is.read(bur);
if(n == -1){
break;
}
os.write(bur);
}
os.flush();
}
}
}
}
If it helps you , Please give me a compliment .
边栏推荐
- Problems and solutions of converting date into specified string in date class
- Hardware and interface learning summary
- DEJA_ Vu3d - cesium feature set 055 - summary description of map service addresses of domestic and foreign manufacturers
- Reading notes of the beauty of programming
- Introduction of motor
- Pointer pointer array, array pointer
- Global and Chinese markets of POM plastic gears 2022-2028: Research Report on technology, participants, trends, market size and share
- 【EI会议分享】2022年第三届智能制造与自动化前沿国际会议(CFIMA 2022)
- NLP generation model 2017: Why are those in transformer
- XML配置文件
猜你喜欢
Arduino六足机器人
Analysis of the combination of small program technology advantages and industrial Internet
Hudi of data Lake (1): introduction to Hudi
小程序技术优势与产业互联网相结合的分析
MySql——CRUD
Date类中日期转成指定字符串出现的问题及解决方法
Go learning --- structure to map[string]interface{}
Mysql - CRUD
Key structure of ffmpeg - avframe
数据分析思维分析方法和业务知识——分析方法(三)
随机推荐
LeetCode 6006. Take out the least number of magic beans
Browser reflow and redraw
Permission problem: source bash_ profile permission denied
MySQL functions
LeetCode 1598. Folder operation log collector
[EI conference sharing] the Third International Conference on intelligent manufacturing and automation frontier in 2022 (cfima 2022)
The global and Chinese markets of dial indicator calipers 2022-2028: Research Report on technology, participants, trends, market size and share
如何解决ecology9.0执行导入流程流程产生的问题
Codeforces gr19 D (think more about why the first-hand value range is 100, JLS yyds)
[Online gadgets] a collection of online gadgets that will be used in the development process
NLP generation model 2017: Why are those in transformer
Global and Chinese market of water heater expansion tank 2022-2028: Research Report on technology, participants, trends, market size and share
Extracting profile data from profile measurement
如何利用Flutter框架开发运行小程序
Location based mobile terminal network video exploration app system documents + foreign language translation and original text + guidance records (8 weeks) + PPT + review + project source code
DEJA_ Vu3d - cesium feature set 055 - summary description of map service addresses of domestic and foreign manufacturers
State mode design procedure: Heroes in the game can rest, defend, attack normally and attack skills according to different physical strength values.
Shardingsphere source code analysis
如何制作自己的機器人
Tools to improve work efficiency: the idea of SQL batch generation tools