zoukankan      html  css  js  c++  java
  • 遍历文件夹结构存储到数据库

    using System;
    using System.Web;
    using System.Linq;
    using System.Configuration;
    using System.Collections.Generic;
    using Newtonsoft.Json;
    using System.IO;
    using System.Data.Common;
    using System.Data;
    using System.Security.Cryptography;
    using System.Text;//有一些没用到

    方法一:

    case "oldfiles"://老方法循环遍历文件夹,缺点:文件夹层级数固定。
    {
    string sql = "";
    var Pid = "0";
    var Pid0 = "";
    var Pid1 = "";
    var Pid2 = "";
    var Pid3 = "";
    var Pid4 = "";
    sql = "delete from table_files";
    pghelper.ExecuteNonQuery(CommandType.Text, sql);
    string fileNameDir = System.Web.HttpContext.Current.Server.MapPath("~");//项目路径
    string photo_path = fileNameDir + "resource/目标文件夹/";//文件路径
    DirectoryInfo theFolder = new DirectoryInfo(photo_path);//初始化对象,创建路径
    int cp = photo_path.IndexOf("resource");
    photo_path = photo_path.Substring(cp);
    string filenameP = "目标文件夹";
    string filepathP = photo_path;
    sql = "insert into table_files(pid,name,filepath) values('" + Pid + "', '" + filenameP + "','" + filepathP + "') RETURNING id;";
    Pid = pghelper.InsertReturnId(sql).ToString();
    FileInfo[] thefileInfo = theFolder.GetFiles("*.*", SearchOption.TopDirectoryOnly);//获取路径photo_path的文件(.后缀文件)
    foreach (FileInfo NextFile in thefileInfo) //遍历根节点下文件
    {
    string filename = NextFile.Name;
    string filepath = NextFile.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid + "', '" + filename + "','" + filepath + "') RETURNING id;";
    pghelper.InsertReturnId(sql);

    }

    DirectoryInfo[] dirInfo0 = theFolder.GetDirectories();//遍历根节点文件夹
    //判断第一层是否存在文件夹
    if (dirInfo0.Length > 0)
    {
    foreach (DirectoryInfo NextFolder0 in dirInfo0)
    {
    string filename0 = NextFolder0.Name;
    string filepath0 = NextFolder0.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid + "', '" + filename0 + "','" + filepath0 + "') RETURNING id;";
    Pid0 = pghelper.InsertReturnId(sql).ToString();

    FileInfo[] fileInfo0 = NextFolder0.GetFiles("*.*", SearchOption.TopDirectoryOnly);//获取目录dirInfo0的文件(.后缀文件)
    foreach (FileInfo NextFile0 in fileInfo0) //遍历第一层文件夹下的文件
    {
    string filePname00 = NextFile0.Name;
    string filePpath00 = NextFile0.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid0 + "', '" + filePname00 + "','" + filePpath00 + "') RETURNING id;";
    pghelper.InsertReturnId(sql); ;
    }

    DirectoryInfo[] dirInfo1 = NextFolder0.GetDirectories();//遍历第一层文件夹
    //判断第二层是否存在文件夹
    if (dirInfo1.Length > 0)
    {
    foreach (DirectoryInfo NextFolder1 in dirInfo1)
    {

    string filename1 = NextFolder1.Name;
    string filepath1 = NextFolder1.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid0 + "', '" + filename1 + "','" + filepath1 + "') RETURNING id;";
    Pid1 = pghelper.InsertReturnId(sql).ToString();
    FileInfo[] fileInfo1 = NextFolder1.GetFiles("*.*", SearchOption.TopDirectoryOnly);//获取目录dirInfo1的文件(.后缀文件)
    foreach (FileInfo NextFile1 in fileInfo1) //遍历第二层文件夹下的文件
    {


    string filename11 = NextFile1.Name;
    string filepath11 = NextFile1.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid1 + "', '" + filename11 + "','" + filepath11 + "') RETURNING id;";
    pghelper.InsertReturnId(sql);
    }
    //NextFile.Name;
    DirectoryInfo[] dirInfo2 = NextFolder1.GetDirectories();//遍历第二层文件夹
    //判断第三层是否存在文件夹
    if (dirInfo2.Length > 0)
    {
    foreach (DirectoryInfo NextFolder2 in dirInfo2)
    {
    string filename2 = NextFolder2.Name;
    string filepath2 = NextFolder2.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid1 + "', '" + filename2 + "','" + filepath2 + "') RETURNING id;";
    Pid2 = pghelper.InsertReturnId(sql).ToString();
    FileInfo[] fileInfo2 = NextFolder2.GetFiles("*.*", SearchOption.TopDirectoryOnly);//获取目录dirInfo2的文件(.后缀文件)
    foreach (FileInfo NextFile2 in fileInfo2) //遍历第三层文件夹下的文件
    {
    string filename22 = NextFile2.Name;
    string filepath22 = NextFile2.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid2 + "', '" + filename22 + "','" + filepath22 + "') RETURNING id;";
    pghelper.InsertReturnId(sql);
    }
    //NextFile.Name;
    DirectoryInfo[] dirInfo3 = NextFolder2.GetDirectories();//遍历第三层文件夹
    //判断第四层是否存在文件夹
    if (dirInfo3.Length > 0)
    {
    foreach (DirectoryInfo NextFolder3 in dirInfo3)
    {
    string filename3 = NextFolder3.Name;
    string filepath3 = NextFolder3.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid2 + "', '" + filename3 + "','" + filepath3 + "') RETURNING id;";
    Pid3 = pghelper.InsertReturnId(sql).ToString();
    FileInfo[] fileInfo3 = NextFolder3.GetFiles("*.*", SearchOption.TopDirectoryOnly);//获取目录dirInfo3的文件(.后缀文件)
    foreach (FileInfo NextFile3 in fileInfo3) //遍历第四层文件夹下的文件
    {
    string filename33 = NextFile3.Name;
    string filepath33 = NextFile3.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid3 + "', '" + filename33 + "','" + filepath33 + "') RETURNING id;";
    pghelper.InsertReturnId(sql);
    }
    //NextFile.Name;
    DirectoryInfo[] dirInfo4 = NextFolder3.GetDirectories();//遍历第四层文件夹
    //判断第五层是否存在文件夹
    if (dirInfo4.Length > 0)
    {
    foreach (DirectoryInfo NextFolder4 in dirInfo3)
    {
    string filename4 = NextFolder4.Name;
    string filepath4 = NextFolder4.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid3 + "', '" + filename4 + "','" + filepath4 + "') RETURNING id;";
    Pid4 = pghelper.InsertReturnId(sql).ToString();
    FileInfo[] fileInfo4 = NextFolder3.GetFiles("*.*", SearchOption.TopDirectoryOnly);//获取目录dirInfo4的文件(.后缀文件)
    foreach (FileInfo NextFile4 in fileInfo4) //遍历第五层文件夹下的文件
    {
    string filename44 = NextFile4.Name;
    string filepath44 = NextFile4.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid4 + "', '" + filename44 + "','" + filepath44 + "') RETURNING id;";
    pghelper.InsertReturnId(sql);
    }
    //NextFile.Name;
    DirectoryInfo[] dirInfo5 = NextFolder3.GetDirectories();//遍历第五层文件夹
    //判断第六层是否存在文件夹
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }


    }
    break;

    方法二:

    case "files"://新方法循环遍历文件夹,在此方法中用到递归函数,文件夹层级数无限制
    {
    string sql = "";
    var Pid = "0";
    sql = "delete from table_files";
    pghelper.ExecuteNonQuery(CommandType.Text, sql);
    string fileNameDir = System.Web.HttpContext.Current.Server.MapPath("~");//项目路径
    string photo_path = fileNameDir + "resource/目标文件夹/";//文件路径
    DirectoryInfo theFolder = new DirectoryInfo(photo_path);//初始化对象,创建路径
    int cp = photo_path.IndexOf("resource");
    photo_path = photo_path.Substring(cp);
    string filenameP = "目标文件夹";
    string filepathP = photo_path;
    sql = "insert into table_files(pid,name,filepath) values('" + Pid + "', '" + filenameP + "','" + filepathP + "') RETURNING id;";
    Pid = pghelper.InsertReturnId(sql).ToString();
    FileInfo[] thefileInfo = theFolder.GetFiles("*.*", SearchOption.TopDirectoryOnly);//获取路径photo_path的文件(.后缀文件)
    foreach (FileInfo NextFile in thefileInfo) //遍历根节点下文件
    {
    string filename = NextFile.Name;
    string filepath = NextFile.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid + "', '" + filename + "','" + filepath + "') RETURNING id;";
    pghelper.InsertReturnId(sql);

    }
    DirectoryInfo[] dirInfo0 = theFolder.GetDirectories();//遍历根节点文件夹
    if (dirInfo0.Length > 0)
    {
    savefiles(dirInfo0, Pid, cp);
    }

    break;

    //遍历文件夹以及文件存入数据库递归方法
    public void savefiles(DirectoryInfo[] theFolder, string Pid, int cp)
    {
    string conn = ConfigurationManager.ConnectionStrings["PgDBConnection"].ConnectionString;
    PostgreHelper pghelper = new PostgreHelper(conn);
    string sql = "";
    string _Pid = "";
    foreach (DirectoryInfo NextFolder0 in theFolder)
    {
    string filename0 = NextFolder0.Name;
    string filepath0 = NextFolder0.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + Pid + "', '" + filename0 + "','" + filepath0 + "') RETURNING id;";
    _Pid = pghelper.InsertReturnId(sql).ToString();

    FileInfo[] fileInfo0 = NextFolder0.GetFiles("*.*", SearchOption.TopDirectoryOnly);//获取目录dirInfo0的文件(.后缀文件)
    foreach (FileInfo NextFile0 in fileInfo0) //遍历文件夹下的文件
    {
    string filePname00 = NextFile0.Name;
    string filePpath00 = NextFile0.FullName.Substring(cp);
    sql = "insert into table_files(pid,name,filepath) values('" + _Pid + "', '" + filePname00 + "','" + filePpath00 + "') RETURNING id;";
    pghelper.InsertReturnId(sql); ;
    }

    DirectoryInfo[] dirInfo1 = NextFolder0.GetDirectories();//遍历文件夹
    if (dirInfo1.Length > 0)
    {
    savefiles(dirInfo1, _Pid, cp);//执行递归函数
    }
    }
    }

  • 相关阅读:
    Handling Errors and Exceptions
    Advanced Features of Delphi DLLs
    How to put a relative path for a DLL statically loaded?
    Delphi DLL制作和加载 Static, Dynamic, Delayed 以及 Shared-Memory Manager
    The useful App Paths registry key : HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Paths
    DLL Dynamic-Link Library Search Order
    Can a windows dll retrieve its own filename?
    Restrict form resize -- Delphi
    Programmer in Google Code
    How to open a web site with the default web browser in a NEW window
  • 原文地址:https://www.cnblogs.com/nn1314/p/10894638.html
Copyright © 2011-2022 走看看