예제 #1
0
        public short dfwopen(string fileName, string fldDelimiter, string strDelimiter, int append, string encoding)
        {
            if (_writeStatus != FileIOStatus.Closed)
            {
                GXLogging.Error(log, "Error ADF0005: open function in use");
                return(GX_ASCDEL_INVALIDSEQUENCE);
            }
            try
            {
                FileMode mode = FileMode.Create;
                if (append == 1)
                {
                    mode = FileMode.Append;
                }
                fileName = Path.Combine(GxContext.StaticPhysicalPath(), fileName);
#pragma warning disable SCS0018 // Path traversal: injection possible in {1} argument passed to '{0}'
                _fsw = new FileStream(fileName, mode, FileAccess.Write, FileShare.ReadWrite, 1024);
#pragma warning restore SCS0018 // Path traversal: injection possible in {1} argument passed to '{0}'
            }
            catch (DirectoryNotFoundException e)
            {
                GXLogging.Error(log, "Error ADF0001", e);
                return(GX_ASCDEL_OPENERROR);
            }
            _fldDelimiterW = CleanDelimiter(fldDelimiter);
            _strDelimiterW = strDelimiter;
            _encodingW     = encoding;
            _sw            = new StreamWriter(_fsw, GXUtil.GxIanaToNetEncoding(encoding, false));
            _currentLineW  = null;
            _writeStatus   = FileIOStatus.Open;
            return(GX_ASCDEL_SUCCESS);
        }
예제 #2
0
 public short dfropen(string fileName, int recSize, string fldDelimiter, string strDelimiter, string encoding)
 {
     if (_readStatus != FileIOStatus.Closed)
     {
         GXLogging.Error(log, "Error ADF0005: open function in use");
         return(GX_ASCDEL_INVALIDSEQUENCE);
     }
     fileName = Path.Combine(GxContext.StaticPhysicalPath(), fileName);
     try
     {
         _fsr = new FileStream(Path.GetFullPath(fileName), FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 1024);
     }
     catch (FileNotFoundException fe)
     {
         GXLogging.Error(log, "Error ADF0001", fe);
         return(GX_ASCDEL_OPENERROR);
     }
     catch (DirectoryNotFoundException de)
     {
         GXLogging.Error(log, "Error ADF0001", de);
         return(GX_ASCDEL_OPENERROR);
     }
     _fldDelimiterR = CleanDelimiter(fldDelimiter);
     _strDelimiterR = strDelimiter;
     _encodingR     = encoding;
     _sr            = new StreamReader(_fsr, GXUtil.GxIanaToNetEncoding(encoding, false));
     _lastPos       = 0;
     _readStatus    = FileIOStatus.Open;
     return(GX_ASCDEL_SUCCESS);
 }
예제 #3
0
 int appendFld(string s)
 {
     if (_currentLineW == null)
     {
         _currentLineW = s;
     }
     else
     {
         _currentLineW = _currentLineW + _fldDelimiterW + s;
     }
     _writeStatus = FileIOStatus.DataReady;
     return(0);
 }
예제 #4
0
 public short dfwclose()
 {
     if (_writeStatus == FileIOStatus.Closed)
     {
         return(GX_ASCDEL_INVALIDSEQUENCE);
     }
     try
     {
         _sw.Close();
         _fsw.Close();
         _writeStatus = FileIOStatus.Closed;
     }
     catch { }
     return(GX_ASCDEL_SUCCESS);
 }
예제 #5
0
 public short dfrclose()
 {
     if (_readStatus == FileIOStatus.Closed)
     {
         return(GX_ASCDEL_INVALIDSEQUENCE);
     }
     try
     {
         _sr.Close();
         _fsr.Close();
         _readStatus = FileIOStatus.Closed;
     }
     catch { }
     return(GX_ASCDEL_SUCCESS);
 }
예제 #6
0
 public short dfwnext()
 {
     if (_writeStatus != FileIOStatus.DataReady)
     {
         return(GX_ASCDEL_INVALIDSEQUENCE);
     }
     try
     {
         if (_currentLineW != null)
         {
             _sw.WriteLine(_currentLineW);
             _currentLineW = null;
         }
         _writeStatus = FileIOStatus.Open;
         return(GX_ASCDEL_SUCCESS);
     }
     catch (Exception ex)
     {
         GXLogging.Error(log, "Error ADF0003", ex);
         return(GX_ASCDEL_WRITEERROR);
     }
 }
예제 #7
0
 public short dfrnext()
 {
     _readStatus = FileIOStatus.Open;
     if (_readStatus == FileIOStatus.Closed)
     {
         return(GX_ASCDEL_INVALIDSEQUENCE);
     }
     try
     {
         _currentLineR = _sr.ReadLine();
     }
     catch (Exception e)
     {
         GXLogging.Error(log, "Error ADF0002", e);
     }
     if (_currentLineR == null)
     {
         return(GX_ASCDEL_ENDOFDATA);
     }
     _lastPos    = 0;
     _readStatus = FileIOStatus.DataReady;
     return(GX_ASCDEL_SUCCESS);
 }