Ejemplo n.º 1
0
        public static bool Create(string filename, Fields fields)
        {
            try
            {
                FileInfo fi = new FileInfo(filename);
                if (fi.Exists)
                {
                    fi.Delete();
                }

                StreamWriter sw = new StreamWriter(filename);
                BinaryWriter bw = new BinaryWriter(sw.BaseStream);

                bool ret = DBFFileHader.Write(bw, fields);

                bw.Flush();
                sw.Flush();
                sw.Close();

                return(ret);
            }
            catch
            {
                return(false);
            }
        }
Ejemplo n.º 2
0
        public DBFFile(string filename)
        {
            try
            {
                FileInfo fi = new FileInfo(filename);
                if (!fi.Exists)
                {
                    return;
                }
                _filename = filename;

                StreamReader sr = new StreamReader(filename);
                BinaryReader br = new BinaryReader(sr.BaseStream);

                _header = new DBFFileHader(br);
                _fields = new List <FieldDescriptor>();
                for (int i = 0; i < _header.FieldsCount; i++)
                {
                    FieldDescriptor field = new FieldDescriptor(br);
                    _fields.Add(field);
                }
                sr.Close();

                int    c           = 1;
                string idFieldName = _idField;
                while (HasField(idFieldName))
                {
                    idFieldName = _idField + "_" + c++;
                }
                _idField = idFieldName;

                _encoder = null;
                try
                {
                    switch ((CodePage)_header.LanguageDriver)
                    {
                    case CodePage.DOS_USA:
                        _encoder = EncodingFromCodePage(437);
                        break;

                    case CodePage.DOS_Multilingual:
                        _encoder = EncodingFromCodePage(850);
                        break;

                    case CodePage.Windows_ANSI:
                        _encoder = EncodingFromCodePage(1252);
                        break;

                    case CodePage.EE_MS_DOS:
                        _encoder = EncodingFromCodePage(852);
                        break;

                    case CodePage.Nordic_MS_DOS:
                        _encoder = EncodingFromCodePage(865);
                        break;

                    case CodePage.Russian_MS_DOS:
                        _encoder = EncodingFromCodePage(866);
                        break;

                    case CodePage.Windows_EE:
                        _encoder = EncodingFromCodePage(1250);
                        break;

                    case CodePage.UTF_7:
                        _encoder = new UTF7Encoding();
                        break;
                    }
                }
                catch { }
                if (_encoder == null)
                {
                    FileInfo encFi = new FileInfo(fi.Directory.FullName + @"\dbf_default_encoding.txt");
                    if (encFi.Exists)
                    {
                        using (StreamReader encSr = new StreamReader(encFi.FullName))
                        {
                            switch (encSr.ReadLine().ToLower())
                            {
                            case "utf8":
                            case "utf-8":
                                _encoder = new UTF8Encoding();
                                break;

                            case "unicode":
                                _encoder = new UnicodeEncoding();
                                break;

                            case "ascii":
                                _encoder = new ASCIIEncoding();
                                break;
                            }
                        }
                    }

                    if (_encoder == null)
                    {
                        _encoder = new UTF7Encoding();
                    }
                }
                //Record(0);
                //Record(1);
            }
            catch
            {
            }
        }