zoukankan      html  css  js  c++  java
  • 读写资源文件

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;

    using System.Resources; 
    using ResEditorComponents ;

    namespace 读写资源文件
    {
        
    /// <summary>
        
    /// Form1 的摘要说明。
        
    /// </summary>

        public class Form1 : System.Windows.Forms.Form
        
    {
            
    private System.Windows.Forms.Button button1;
            
    private System.Windows.Forms.Button button2;
            
    private System.Windows.Forms.Button button3;
            
    private System.Windows.Forms.Button button4;
            
    private System.Windows.Forms.Button button5;
            
    private System.Windows.Forms.PictureBox pictureBox1;
            
    /// <summary>
            
    /// 必需的设计器变量。
            
    /// </summary>

            private System.ComponentModel.Container components = null;

            
    public Form1()
            
    {
                
    //
                
    // Windows 窗体设计器支持所必需的
                
    //
                InitializeComponent();

                
    //
                
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
                
    //
            }


            
    /// <summary>
            
    /// 清理所有正在使用的资源。
            
    /// </summary>

            protected override void Dispose( bool disposing )
            
    {
                
    if( disposing )
                
    {
                    
    if (components != null
                    
    {
                        components.Dispose();
                    }

                }

                
    base.Dispose( disposing );
            }


            
    Windows 窗体设计器生成的代码

            
    /// <summary>
            
    /// 应用程序的主入口点。
            
    /// </summary>

            [STAThread]
            
    static void Main() 
            
    {
                Application.Run(
    new Form1());
            }


            
    //将字符串写入资源文件
            private void button1_Click(object sender, System.EventArgs e)
            
    {
                
                
    // Creates a resource writer. 

                IResourceWriter writer 
    = new ResourceWriter("myString.resources"); 



                
    // Adds resources to the resource writer. 

                writer.AddResource(
    "ID""0001"); 

                writer.AddResource(
    "NAME""FURENJUN"); 

                writer.AddResource(
    "AGE""22"); 

                
    // Writes the resources to the file or stream, and closes it. 

                writer.Close(); 
                MessageBox.Show(
    "success") ;
            }


            
    private void Form1_Load(object sender, System.EventArgs e)
            
    {
            
            }


            
    private void button2_Click(object sender, System.EventArgs e)
            
    {
                
    // Creates a resource writer. 

                ResourceWriter rw 
    = new ResourceWriter (Application.StartupPath +@"\picture.resources" ); 



                
    //从指定的文件创建Image对象. 
                OpenFileDialog openFileDialog1 = new OpenFileDialog();

                openFileDialog1.InitialDirectory 
    = "c:\\" ;
                openFileDialog1.Filter 
    = "图像文件 (*.jpg)|*.jpg|All files (*.*)|*.*" ;
                openFileDialog1.FilterIndex 
    = 1 ;
                openFileDialog1.RestoreDirectory 
    = true ;
                openFileDialog1.Multiselect 
    =true;
                
    if(openFileDialog1.ShowDialog() == DialogResult.OK)
                
    {

                    
    string[] fileName1= openFileDialog1.FileNames;
                    
    int i=fileName1.Length ;
                    
    for(int j=0;j<i;j++)
                    
    {
                        
    //把Image对象添加到资源文件中 
                        
    //ResourceWritername.AddResource(string name, object value); 
                        
    //其中name为资源名,value为资源值 
                        string ImageName="Img" + j.ToString(); 
                        Image Img
    =Image.FromFile (fileName1[j]);
                        rw.AddResource ( ImageName , Img ); 

                    }

                    
                }

        
                
    // Writes the resources to the file or stream, and closes it. 

                rw.Generate (); 

                rw.Close (); 
                MessageBox.Show(
    "success") ;
            }


            
    private void button3_Click(object sender, System.EventArgs e)
            
    {
                ResEditor redit
    =new ResEditor();
                redit.Show(); 
            }


        
            
    private void button5_Click(object sender, System.EventArgs e)
            
    {
                
    //初始化 ResourceManager 类的新实例,它查找包含在一些文件中的资源,
                
    //这些文件是使用给定的 Assembly 从指定根名称导出的。
                
    //格式
                
    //  public ResourceManager(
                
    //   string baseName,
                
    //   Assembly assembly
                
    //);


                
    //读取资源文件
                ResourceManager rm;
                
    //rm = new ResourceManager("读写资源文件.picture", this.GetType().Assembly);     //应用(2.1)写法
                rm = new ResourceManager("读写资源文件.image.picture"this.GetType().Assembly); //应用(2.2)写法
                this.pictureBox1.Image = (System.Drawing.Image)rm.GetObject("Img0");
                 
                rm 
    = new ResourceManager("读写资源文件.myString"this.GetType().Assembly);
                MessageBox.Show(rm.GetObject(
    "ID").ToString()  ) ;
                
    //备注:
                
    //1.一定要将生成的资源文件添加到当前项目中,并将其设为"嵌入的资源".
                
    //2.如果你资源文件在debug文件夹下,
                
    //   (2.1) (资源的根名称)baseName格式为:<default namespace.><filename>
                
    //  如果资源的文件在该项目的子文件夹中,
                
    //   (2.2) baseName格式为:<default namespace.><child folder name.><filename> 
                

            }


            
    //系统所带资源文件编辑工具源代码
            
    //D:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Samples\Tutorials\resourcesandlocalization\reseditor
            
    //Environment.GetCommandLineArgs()

            
    //只有 .resources 文件才应嵌入在公共语言运行库程序集和附属程序集中。
            
    //资源文件生成器 (Resgen.exe) 将文本 (.txt) 文件和基于 XML 的资源 (.resx) 文件转换成 
            
    //.resources 文件,方法是包装由 ResourceReader、ResourceWriter、ResXResourceReader 
            
    //和 ResXResourceWriter 类实现的方法。您还可以使用 Resgen.exe 来将 .resources 文件
            
    //转换回 .resx 和 .txt 文件。

            
    //D:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Samples\Tutorials\resourcesandlocalization\resxgen


        }

    }

    //读取.exe文件中的图片,并将其保存下来

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Reflection;
    using System.IO;

    namespace EmbeddedResources1
    {
        
    /// <summary>
        
    /// Summary description for Form1.
        
    /// </summary>

        public class MainForm : System.Windows.Forms.Form
        
    {
            
    private Assembly loadedAssembly = null;

            
    private System.Windows.Forms.Panel panel1;
            
    private System.Windows.Forms.Button loadAssembly;
            
    private System.Windows.Forms.ListBox resources;
            
    private System.Windows.Forms.Panel panel2;
            
    private System.Windows.Forms.PictureBox image;
            
    private System.Windows.Forms.Splitter splitter;
            
    private System.Windows.Forms.Button save;
            
    private System.Windows.Forms.OpenFileDialog ofd;
            
    private System.Windows.Forms.SaveFileDialog sfd;
            
    /// <summary>
            
    /// Required designer variable.
            
    /// </summary>

            private System.ComponentModel.Container components = null;

            
    public MainForm()
            
    {
                
    //
                
    // Required for Windows Form Designer support
                
    //
                InitializeComponent();

                
    //
                
    // TODO: Add any constructor code after InitializeComponent call
                
    //
            }


            
    /// <summary>
            
    /// Clean up any resources being used.
            
    /// </summary>

            protected override void Dispose( bool disposing )
            
    {
                
    if( disposing )
                
    {
                    
    if (components != null
                    
    {
                        components.Dispose();
                    }

                }

                
    base.Dispose( disposing );
            }


            
    Windows Form Designer generated code

            
    /// <summary>
            
    /// The main entry point for the application.
            
    /// </summary>

            [STAThread]
            
    static void Main() 
            
    {
                Application.Run(
    new MainForm());
            }


            
    private void loadAssembly_Click(object sender, System.EventArgs e)
            
    {
                ofd.FileName 
    = "";

                
    if( ofd.ShowDialog() == DialogResult.Cancel )
                    
    return;

                
    try
                
    {
                    loadedAssembly 
    = Assembly.LoadFrom(ofd.FileName);
                }

                
    catch(Exception ex)
                
    {
                    MessageBox.Show(ex.Message);
                    
    return ;
                }


                LoadResources();
            }


            
    private void LoadResources()
            
    {
                
    string [] resourceNames = loadedAssembly.GetManifestResourceNames();

                resources.Items.Clear();

                
    if( resourceNames.Length > 0 )
                
    {
                    resources.BeginUpdate();

                    
    foreach(string resourceName in resourceNames)
                    
    {
                        resources.Items.Add(resourceName);
                    }

                        
                    resources.EndUpdate();
                }


                Image img 
    = image.Image;

                image.Image 
    = null;

                
    if( img != null )
                
    {
                    img.Dispose();
                    img 
    = null;
                }

            }


            
    private void save_Click(object sender, System.EventArgs e)
            
    {
                
    if( resources.SelectedIndex < 0 )
                    
    return ;

                sfd.FileName 
    = (string) resources.SelectedItem;

                
    if( sfd.ShowDialog() == DialogResult.Cancel )
                    
    return ;

                Stream outFile 
    = sfd.OpenFile();
                Stream inFile 
    = loadedAssembly.GetManifestResourceStream((string) resources.SelectedItem);

                
    long length = inFile.Length;

                
    if( length > int.MaxValue )
                
    {
                    MessageBox.Show(
    "Unable to write file in this version, sorry");
                    outFile.Close();
                    inFile.Close();
                }


                
    byte [] bytes = new byte[length];

                inFile.Read( bytes, 
    0, (int) length );
                outFile.Write( bytes, 
    0, (int) length );

                inFile.Close();
                outFile.Close();
            }


            
    private void resources_SelectedIndexChanged(object sender, System.EventArgs e)
            
    {
                
    if( resources.SelectedIndex < 0 )
                    
    return ;

                Stream stream 
    = null;

                
    try
                
    {
                    stream 
    = loadedAssembly.GetManifestResourceStream((string) resources.SelectedItem);

                    Image img 
    = Image.FromStream(stream);
                    Image oldImage 
    = image.Image;

                    image.Image 
    = img;

                    
    if( oldImage != null )
                    
    {
                        oldImage.Dispose();
                        oldImage 
    = null;
                    }

                }

                
    catch
                
    {
                }

                
    finally
                
    {
                    
    if( stream != null )
                        stream.Close();
                }

            }

        }

    }

  • 相关阅读:
    阅读文献的三大问题:坐不住,记不住,想不开
    C++之vector模板类
    C++之string类
    算法学习(1)枚举法求运算符
    二叉树(4)非递归法遍历二叉树
    二叉树(3):对二叉树数的操作
    Pascal's Triangle,Pascal's Triangle II
    Next Permutation
    Permutations,Permutations II,Combinations
    Majority Element,Majority Element II
  • 原文地址:https://www.cnblogs.com/furenjun/p/389631.html
Copyright © 2011-2022 走看看