csharp file_operations的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp file_operations的相关的知识,希望对你有一定的参考价值。

class Fileprocess
    {
        public string File_Path;
        Dictionary<string, string> niarxosfile = new Dictionary<string, string>();



        // Default Constructor




        // Constructor (with pathname)
        public Fileprocess(string File_Path)
        {
            File_Path = this.File_Path;        
        }

        // Method File Size
        public string get_file_size()
        {
            FileInfo fi = new FileInfo(File_Path);
            var size = fi.Length;
            return (String.Format("{0}", size));
        }

        // Method Basename
        public string get_file_basename()
        {
            FileInfo fi = new FileInfo(File_Path);
            string basename = fi.Name;
            return (string.Format("{0}", basename));
        }

        // Method Dirname
        public string get_file_dirname()
        {
            FileInfo fi = new FileInfo(File_Path);
            string basename = fi.DirectoryName;
            return (string.Format("{0}", basename));
        }

        // Method Last update
        public string get_last_update()
        {
            FileInfo fi = new FileInfo(File_Path);
            string lutime = fi.LastAccessTime.ToString();
            return (string.Format("{0}", lutime));
        }

        // Method Last Access
        public string get_last_access()
        {
            FileInfo fi = new FileInfo(File_Path);
            string latime = fi.LastAccessTime.ToString();
            return (string.Format("{0}", latime));
        }

        // Method Permissions
        
        // Method Check existence
        public bool Check_File_Exists()
        {
            //FileInfo fi = new FileInfo(File_Path);
            
            if (File.Exists(File_Path))
            {
                return true;
            }
            else
            {
                return false;
            }


        }

        // Method File Size in Lines
        public string File_Size_Lines()
        {
            var lineCount = File.ReadLines(File_Path).Count();
            return (string.Format("{0}", lineCount));
        }


        // Method Load to Dictionary
        public void TextFileToDictionary()
        {

            // PREPEI NA EINAI GLOBAL
            //Dictionary<string, string> niarxosfile = new Dictionary<string, string>();
            using (var sr = new StreamReader(File_Path))
            {
                string line = null;

                // while keys exist
                while ((line = sr.ReadLine()) != null)
                {
                    // slice
                    string AP = line.Substring(0, 11);
                    string REST = line.Substring(11, line.Length); 


                    // add the first slice to key
                    // everything else to value - WILL NEED FUTHER SLICING

                    niarxosfile.Add(AP, REST);
                }
            }


        }


        // Method Copy/Backup
        public void File_Backup()
        {
            FileInfo fi = new FileInfo(File_Path);
            
        }



    }
int counter = 0;
string line;

// Read the file and display it line by line.
System.IO.StreamReader file = 
   new System.IO.StreamReader("c:\\test.txt");
while((line = file.ReadLine()) != null)
{
   // Here, instead of Console we can output in textboxes, etc
   Console.WriteLine (line);
   counter++;
}

file.Close();

// Suspend the screen.
Console.ReadLine();

//


// READ FILES LINE BY LINE - METHOD1
var filestream = new System.IO.FileStream(textFilePath,
                                          System.IO.FileMode.Open,
                                          System.IO.FileAccess.Read,
                                          System.IO.FileShare.ReadWrite);
var file = new System.IO.StreamReader(filestream, System.Text.Encoding.UTF8, true, 128);

while ((lineOfText = file.ReadLine()) != null)
{
    //Do something with the lineOfText
}

// READ FILES LINE BY LINE - METHOD2 - Using StreamReader.ReadLine
// This is basically your method. For some reason you set the buffer 
// size to the smallest possible value (128). Increasing this will in general 
// increase performance. The default size is 1,024 and other good choices are 512 (the sector size in Windows) 
//or 4,096 (the cluster size in NTFS). You will have to run a benchmark to determine an optimal buffer size. 
//A bigger buffer is - if not faster - at least not slower than a smaller buffer.
//The FileStream constructor allows you to specify FileOptions. For example, if you are reading a large file sequentially 
//from beginning to end, you may benefit from FileOptions.SequentialScan. Again, benchmarking is the best thing you can do.


const Int32 BufferSize = 128;
using (var fileStream = File.OpenRead(fileName))
  using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize)) {
    String line;
    while ((line = streamReader.ReadLine()) != null)
      // Process line
  }
  

//Using File.ReadLines
//This is very much like your own solution except that it is implemented using a StreamReader with a fixed buffer size of 1,024. 
//On my computer this results in slightly better performance compared to your code with the buffer size of 128. However, you can 
//get the same performance increase by using a larger buffer size. This method is implemented using an iterator block and does 
//not consume memory for all lines.

var lines = File.ReadLines(fileName);
foreach (var line in lines)
  // Process line
Using File.ReadAllLines

//This is very much like the previous method except that this method grows a list of strings used to create the returned array of 
//lines so the memory requirements are higher. However, it returns String[] and not an IEnumerable<String> allowing you to randomly 
//access the lines.

var lines = File.ReadAllLines(fileName);
foreach (var line in lines)
  // Process line
Using String.Split

//This method is considerably slower, at least on big files (tested on a 511 KB file), probably due to how String.Split is implemented. 
//It also allocates an array for all the lines increasing the memory required compared to your solution.

using (var streamReader = File.OpenText(fileName)) {
  var lines = streamReader.ReadToEnd().Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  foreach (var line in lines)
    // Process line
}


//If you're just wanting to read lines in a file without doing much, according to these benchmarks, 
//the fastest way to read a file is the age old method of:

using (StreamReader sr = File.OpenText(fileName))
{
        string s = String.Empty;
        while ((s = sr.ReadLine()) != null)
        {
               //do minimal amount of work here
        }
}


//However, if you have to do a lot with each line, then this article concludes that the best way is 
//the following (and it's faster to pre-allocate a string[] if you know how many lines you're going to read) :

AllLines = new string[MAX]; //only allocate memory here

using (StreamReader sr = File.OpenText(fileName))
{
        int x = 0;
        while (!sr.EndOfStream)
        {
               AllLines[x] = sr.ReadLine();
               x += 1;
        }
} //Finished. Close the file

//Now parallel process each line in the file
Parallel.For(0, AllLines.Length, x =>
{
    DoYourStuff(AllLines[x]); //do your work here
});

internal static bool FileExists(string name)
{
   return (File.Exists(name));
}
private static void DirectoryCopy(string sourceDirname, string destDirname, bool copySubDirs)
{
  ///////
  // Input: SourceDirectory, DestinationDirectory, flag (T/F) if we want to copy subdirs
  // Output: Exact Duplicate of original directory (with or w/o subdirs)
  // Usage: DirectoryCopy(Paths2.master_folder, Paths2.prod_folder, true)
  // Notes: Flag is set to true if we want to copy subdirectories or not
  
  // Get the subdirectories for the specified directory
  DirectoryInfo dir = new DirectoryInfo(sourceDirName);
  
  if (!Dir.Exists)
  {
    throw new DirectoryNotFoundException(
      "Source directory does not exist or could not be found:" + sourceDirName);
  }
  
  DirectoryInfo[] dirs = dir.GetDirectories();
  
  // if the Destination directory doesnt exist, create it
  if (!Directory.Exists(destDirName))
  {
    Directory.CreateDirectory(destDirName);
  }
  
  // Get the files in the origin directory and copy them to new location
  FileInfo[] files = dir.GetFiles();
  forech (FileInfo file in files)
  {
    string temppath = Path.Combine(destDirName, file.Name);
    file.CopyTo(temppath, false);
  }
  
  // If we re copying subdirectories, copy them and their contents to new location
  if (copySubDirs)
  {
    foreach (DirectoryInfo subdir in dirs)
    {
      string temppath = Path.Combine(destDirName, subdir.Name);
      DirectoryCopy(subdir.Fullname, temppath, copySubDirs);
    }
  }
}

//COUNT NUMBER OF LINES OF FILE - METHOD 1
var lineCount = File.ReadLines(@"C:\file.txt").Count();

//COUNT NUMBER OF LINES OF FILE - METHOD 2
var lineCount = File.ReadAllLines(@"C:\file.txt").Length;
For a more efficient method you could do:

var lineCount = 0;
using (var reader = File.OpenText(@"C:\file.txt"))
{
    while (reader.ReadLine() != null)
    {
        lineCount++;
    }
}


//COUNT NUMBER OF LINES OF FILE - METHOD 3
int lines = File.ReadAllLines("myfile").Length;

//COUNT NUMBER OF LINES OF FILE - METHOD 4

int count = 0;
string line;
TextReader reader = new StreamReader("file.txt");
while ((line = reader.ReadLine()) != null)
{
  count++;
}
reader.Close();
private void deleteFolder(string folder)
{
  //////
  // Input: folder path
  // Output: None, unless there's an exception
  // Usage: deleteFolder("/path/to...")
  // Notes: If the folder is already deleted, display message.
  //
  
  try {
    Directory.Delete(folder,true);
  }
  catch(Exception e)
  {
    MessageBox.Show("Production Folder already deleted\n" + e.Message)
  }
string[] subfiles = Directory.GetFiles(path)    
string[] subdirs = Directory.GetDirectories(path)
1. checkifFileExists       - checkiffileexists.cs
2. checkifdirectoryExists  - checkifdirexists.cs
3. FileOrDirExists         - FileorDir Exists
4. DeleteFolder            - Delete a given Folder
5. CopyFolder              - Copy a given Folder
6. GetallFilesinDir        - Get all Files from a directory
7. GetallSubdirsinDir      - Get all Subdirectories from a directory
8. FindReplaceinFile       - File / Replace all patterns in file
9. CountNumberofLines      - Counts number of lines of text file
internal static bool FileOrDirectoryExists(string name)
{
   return (Directory.Exists(name) || File.Exists(name));
}
internal static bool DirectoryExists(string name)
{
   return (Directory.Exists(name));
}
private void find_replace(string pattern, string pattern2, string file)
{
  string text = File.ReadAllText(file);
  text = text.Replace(pattern, pattern2);
  File.WriteAllText(file, text)
}

以上是关于csharp file_operations的的主要内容,如果未能解决你的问题,请参考以下文章

file_operations poll function

python file_operation

Linux驱动开发file_operations结构体

Linux驱动开发file_operations结构体

使用结构体 file_operations封装驱动设备的操作

Ubuntu:内核 5.6.0-rc3:file_operations 中不支持 IOCTL?