当前位置:网站首页>[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 .
边栏推荐
- Notepad++ regular expression replacement string
- [QT] QT uses qjson to generate JSON files and save them
- Spark-SQL UDF函数
- Uniapp development, packaged as H5 and deployed to the server
- MySql——CRUD
- Recognize the small experiment of extracting and displaying Mel spectrum (observe the difference between different y_axis and x_axis)
- Calculate sha256 value of data or file based on crypto++
- 关于slmgr命令的那些事
- Ffmpeg learning - core module
- NLP text processing: lemma [English] [put the deformation of various types of words into one form] [wet- > go; are- > be]
猜你喜欢

The relationship between FPGA internal hardware structure and code

如何制作自己的机器人

Leetcode:20220213 week race (less bugs, top 10% 555)

如何制作自己的機器人

Tools to improve work efficiency: the idea of SQL batch generation tools

Huawei equipment is configured with OSPF and BFD linkage

Determinant learning notes (I)

Analysis of the combination of small program technology advantages and industrial Internet

Opencv classic 100 questions

Anconda download + add Tsinghua +tensorflow installation +no module named 'tensorflow' +kernelrestart: restart failed, kernel restart failed
随机推荐
Go learning --- structure to map[string]interface{}
[Chongqing Guangdong education] Chongqing Engineering Vocational and Technical College
AtCoder Beginner Contest 254【VP记录】
数据分析思维分析方法和业务知识——分析方法(二)
Notepad + + regular expression replace String
[EI conference sharing] the Third International Conference on intelligent manufacturing and automation frontier in 2022 (cfima 2022)
Search (DFS and BFS)
小程序技术优势与产业互联网相结合的分析
MySQL storage engine
How to solve the problems caused by the import process of ecology9.0
Power Query数据格式的转换、拆分合并提取、删除重复项、删除错误、转置与反转、透视和逆透视
MySQL之函数
Recognize the small experiment of extracting and displaying Mel spectrum (observe the difference between different y_axis and x_axis)
数据分析思维分析方法和业务知识——分析方法(三)
Global and Chinese market of digital serial inverter 2022-2028: Research Report on technology, participants, trends, market size and share
Uniapp development, packaged as H5 and deployed to the server
Configuring OSPF load sharing for Huawei devices
OpenCV经典100题
State mode design procedure: Heroes in the game can rest, defend, attack normally and attack skills according to different physical strength values.
如何解决ecology9.0执行导入流程流程产生的问题