Reading in a line of text and breaking it up, complicated

Hi all,
At the moment im reading in a few 100 lines of text from a file, each line contains a command and a few variables which need to be set to existing variables I have created shown below;
Int variableA ;
Int variable B ;
Int variable C;
Int Variable D;
However I have no way to know which command will go with which variables,
On every line there will be one command and two variables..
The possible command are; ADD, SUB, TIMES, Divide, COPY, SET
And the text coming in look like this;
SET A10, B15 // set each variable
SET C33, D50 // as above
COPY A, B // which means assign copy what ever in variableA to variableB
ADD C, D // which mean add variableC�s contents to variableD contents
SUB B, C // which is subtract variableC contents by what ever is in variableB
Does anybody know of a way where I can test what the next command is, and assign the correspond variables , so far I have come up with;
But am not sure if this is the best way to go about it, was thinking maybe I should put the text file into an array, which might make it easyer to process.
public static void main (String [] args)
int D = 0 ;
int C = 0 ;
int B = 0 ;
int A = 0 ;
StringTokenizer st ;
String line ;
String buffer = "";
String file ="test2.txt" ;
String name = "";
String billy = "";
try
FileReader fr = new FileReader(file) ;
BufferedReader inFile = new BufferedReader (fr) ;
//read in one line @ a time
buffer =inFile.readLine() ;
while (buffer !=null)
StringTokenizer words = new StringTokenizer (buffer) ;
//put the buffer "line" into a tokenizer for individual characters out of a line;
while(words.hasMoreTokens())
String letter = words.nextToken() ;
if(letter.charAt (0) == 'S') // if first letter = S would be SET
System.out.println(letter) ;
//display the token as a test output;
if(letter.charAt (0) == 'A') // if letter = A would be ADD
System.out.println(letter) ;
buffer = inFile.readLine() ;
     //read in next line
inFile.close();
catch (FileNotFoundException e)
System.out.println("File not found");
catch ( IOException e)
System.out.println("IO Exception") ;
}

hi,
i think that what u r tring to do is "parsing" where u translate these primatin=ve commands to execute them, if so here what u need to do:
Rad a line untell end of file
for each token in the line
if(token="SET" || token="ADD || token=""SUB")
{       //save operation for later use
operation=token;
//now u expect the next token to be an operand
token=nextToken;
if (token!="" and token!=",")//it must be an operand
{operand1=token;
token=next token;
if(token=",")//do nothing just read the nest operand
token=nexttoken;
else //syntax error in file, exit ;
if (token!="" and token!=",")//checking the 2nd operand
operand2=token;
//now check value of operation and call the right method and send operand1,operand2 as arguments to get the result e.g
if(opration=="ADD")
system.println("result of addition is"+addMethod(operand1,operand2));
hope that helps,
Insighter

Similar Messages

  • How can i copy line with text and image to ms word

    When I insert an image in textflow using InlineGraphicElement it works, but when I copy the line with the image to MS Word it copies only the text (not the image).
    How can i copy the image to MS Word?

    If you want copy formatted text and image to MS Word, you need to give MS Word rtf markup, because Word can recognize rtf markup but not TLF markup.
    So you need to create a custom clipboard to paste a rtf markup. It's a large feature for you, because you need a tlf-rtf converter in your custom clipboard.
    TLF Custom Clipboard Example:
    package
        import flash.display.Sprite;
        import flash.desktop.ClipboardFormats;
        import flashx.textLayout.container.ContainerController;
        import flashx.textLayout.conversion.ITextImporter;
        import flashx.textLayout.conversion.TextConverter;
        import flashx.textLayout.edit.EditManager;
        import flashx.textLayout.elements.*;
        import flashx.undo.UndoManager;
        // Example code to install a custom clipboard format. This one installs at the front of the list (overriding all later formats)
        // and adds a handler for plain text that strips out all consonants (everything except aeiou).
        public class CustomClipboardFormat extends Sprite
            public function CustomClipboardFormat()
                var textFlow:TextFlow = setup();
                TextConverter.addFormatAt(0, "vowelsOnly_extraList", VowelsOnlyImporter, AdditionalListExporter, "air:text" /* it's a converter for cliboard */);
            private const markup:String = '<TextFlow whiteSpaceCollapse="preserve" version="2.0.0" xmlns="http://ns.adobe.com/textLayout/2008"><p><span color=\"0x00ff00\">Anything you paste will have all consonants removed.</span></p></TextFlow>';
            private function setup():TextFlow
                var importer:ITextImporter = TextConverter.getImporter(TextConverter.TEXT_LAYOUT_FORMAT);
                var textFlow:TextFlow = importer.importToFlow(markup);
                textFlow.flowComposer.addController(new ContainerController(this,500,200));
                textFlow.interactionManager = new EditManager(new UndoManager());
                textFlow.flowComposer.updateAllControllers();
                return textFlow;
    import flashx.textLayout.conversion.ITextExporter;
    import flashx.textLayout.conversion.ConverterBase;
    import flashx.textLayout.conversion.ITextImporter;
    import flashx.textLayout.conversion.TextConverter;
    import flashx.textLayout.elements.IConfiguration;
    import flashx.textLayout.elements.TextFlow;
    class VowelsOnlyImporter extends ConverterBase implements ITextImporter
        protected var _config:IConfiguration = null;
        /** Constructor */
        public function VowelsOnlyImporter()
            super();
        public function importToFlow(source:Object):TextFlow
            if (source is String)
                var firstChar:String = (source as String).charAt(0);
                firstChar = firstChar.toLowerCase();
                // This filter only applies if the first character is a vowel
                if (firstChar == 'a' || firstChar == 'i' || firstChar == 'e' || firstChar == 'o' || firstChar == 'u')
                    var pattern:RegExp = /([b-df-hj-np-tv-z])*/g;
                    source = source.replace(pattern, "");
                    var importer:ITextImporter = TextConverter.getImporter(TextConverter.PLAIN_TEXT_FORMAT);
                    importer.useClipboardAnnotations = this.useClipboardAnnotations;
                    importer.configuration = _config;
                    return importer.importToFlow(source);
            return null;
        public function get configuration():IConfiguration
            return _config;
        public function set configuration(value:IConfiguration):void
            _config = value;
    import flashx.textLayout.elements.ParagraphElement;
    import flashx.textLayout.elements.SpanElement;
    import flashx.textLayout.elements.ListElement;
    import flashx.textLayout.elements.ListItemElement;
    class AdditionalListExporter extends ConverterBase implements ITextExporter
        /** Constructor */
        public function AdditionalListExporter()   
            super();
        public function export(source:TextFlow, conversionType:String):Object
            if (source is TextFlow)
                source.getChildAt(source.numChildren - 1).setStyle(MERGE_TO_NEXT_ON_PASTE, false);
                var list:ListElement = new ListElement();
                var item1:ListItemElement = new ListItemElement();
                var item2:ListItemElement = new ListItemElement();
                var para1:ParagraphElement = new ParagraphElement();
                var para2:ParagraphElement = new ParagraphElement();
                var span1:SpanElement = new SpanElement();
                span1.text = "ab";
                var span2:SpanElement = new SpanElement();
                span2.text = "cd";
                list.addChild(item1);
                list.addChild(item2);
                item1.addChild(para1);
                para1.addChild(span1);
                item2.addChild(para2);
                para2.addChild(span2);
                source.addChild(list);
                var exporter:ITextExporter = TextConverter.getExporter(TextConverter.TEXT_LAYOUT_FORMAT);
                exporter.useClipboardAnnotations = this.useClipboardAnnotations;
                return exporter.export(source, conversionType);   
            return null;

  • IPhone5 touchscreen "develops" grey lines around text and becomes unresponsive

    My original iPhone 5 has developed another issue with the touch screen.
    When switching the phone on after a few moments the touchscreen begins to "develop" grey lines, both vertical and horizontal around the text on the screen, which eventually renders the touchscreen inactive after approx 2 minutes.  The development of the grey lines is quicker at cold temperatures, e.g. outside
    To clear this issue I have to switch the phone off and on again (not power down).  This is now making it very difficult to browse the internet, and write messages.  It is also becoming increasingly difficult to swipe to answer calls.
    I am up to date with system upgrades, so currently on iOS 8.1.1(?)
    This is the second issue I've had with the touchscreen in 2 months, and I'm beginning to wonder if I should replace the phone all together :/
    Does anyone have any insight into this issue/had similar problems, and... is it fixable?
    Thanks!

    It is very possible, but first things first.
    This is the second issue, what was the first one? What user troubleshooting have you tried?
    What do you mean about switching the phone off and on again no powering down? What do you call turning the power off?
    As far as being fixable, first need to know what you have done as far as trying to fix the problem.

  • Hp c7180. Test page has got lines across text and colours.

    My Hp photosmart c7180 is not printing to a good quality.
    My problems started when the cleaning mechanism was not able to go back to the home position and this then caused the print head to slam up to the cleaning mechanism (there is two plastic tabs that it hit). I then went inside the machine and found that the cleaning mechanism is on a runner with the rubber and a few other things. I freed up this mechanism and got it to slide up and down several times. i then put the machine back together printed a test page and the inks were very faint. After cleaning the head and doing an alignment several times, the inks are becoming more clear but still not right. There is a lot of lines through the text and the blocks of colour.
    I did a print of a page of small text and the quality was fine. I printed a picture in greyscale and it has greens and reds in it. Also the larger text is blurred on some lines (not all the text on the same line is blurred)
    What do i do now ??
    There is also a roller that is spinning more than it used to. This is located underneath the print head towards the back of the printer.( It is connected to the little cogs on the left which pump the ink to the heads i think) Any suggestions on this would also be greatly appreciated.
    Many thanks
    Stephen

    Thank you for the detailed post rileyc.
    I would like to help you with the printing issue you are experiencing. I understand the issue seems to be related to the ink system or potentially the driver. The best plan of attack is to narrow down the root cause.
    Can you please perform a colour copy that contains black spots too? I would like to see if the printer hardware can duplicate a page without any quality issues. Please let me know the outcome of the copy and we can go from there. Thanks
    Please click the Thumbs up icon below to thank me for responding.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Please click “Accept as Solution” if you feel my post solved your issue, it will help others find the solution.
    Sunshyn2005 - I work on behalf of HP

  • How to read a file with both text and binary data?

    For text data I use a BufferedReader,
    for binary data I use a DataInputStream.
    Since readLine is deprecated in DataInputStream, how can I read in a proper way a file that contains some lines of text followed by some binary data.
    Is there a way to do this without writing a new 'readLine' for DataInputStream (that has to take into account the different newlines for Unix en other OS's)?

    sorry about that ^
    NEW STRING str
    WHILE there is stuff in the file DO
        getByte()
        IF reading a string THEN
            WHILE byte is not a return character DO
                convert the byte to character/string
                append char to str
            WEND
        ELSE IF reading raw data THEN
            parse raw data
            do stuff with it
        END IF
    WEND

  • How would you read in each line of data and display them to message box?

    How would you read in each line of data from the _.txt file_ and display the whole data using an information-type message box?
    I know how to display each line of the .txt file data, but I do not know how to display the whole thing.
    Here is how I did to display each line of data using the message box:
    import javax.swing.JOptionPane;          // Needed for the JOptionPane class
    import java.io.*;                         // Needed for file classes
    public class problem3
         public static void main(String[] args) throws IOException
              String filename;          // Needed to read the file
              String categories;          // Needed to read the categories
              // Get the filename.
              filename = JOptionPane.showInputDialog("Enter the filname.");
              // Open the file.
              FileReader freader = new FileReader(filename);
              BufferedReader inputFile = new BufferedReader(freader);
              // Read the categories from the file.
              categories = inputFile.readLine();
              // If a category was read, display it and
              // read the remainig categories.
              while(categories != null)
                   // Display the last category read.
                   JOptionPane.showMessageDialog(categories);
                   // Read the next category.
                   categories = inputFile.readLine();
              // Close the file.
              inputFile.close();
    }I think I need to change here:
    // If a category was read, display it and
              // read the remainig categories.
              while(categories != null)
                   // Display the last category read.
                   JOptionPane.showMessageDialog(categories);
                   // Read the next category.
                   categories = inputFile.readLine();
              }but I don't know how to.
    Could you please help me?
    Thank you.

    kyorochan wrote:
    jverd wrote:
    What is not understood about your question is which part of "read a bunch of lines and display them in a textbox" do you not understand.
    First thing's first though: You do recognize that "read a bunch of lines and display them in a textbox" has a few distinct and completely independent parts, right?I'm sorry. I'm not good at English, so I do not understand what you said...
    What I was trying to say is "How to display the whole lines of .txt file in single dialog box."We know that.
    Do you understand that any problem can be broken down into smaller pieces?
    Do you understand that your problem has the following pieces?
    1. Read lines from the file.
    2. Put the lines together into one String.
    3. Put the String into the message box.
    and maybe
    4. Make sure the message box contents are split into lines exactly as the file was.
    (You didn't make it clear if that last one is a requirement.)
    Do you understand that 1-4 are completely independent problems and can be solved separately from each other?
    Do you understand that you have stated that you already know how to do 1 and 3?
    Therefore, you are NOT asking "How to display the whole lines of .txt file in single dialog box." Rather, you ARE asking either #2 or #4 or both.
    If you say once more "display all the lines of the file in one dialog box," then it is clear that we are unable to communicate with you and we cannot help you.

  • PO line item text and material po text

    Hi,
    I want to fetch the text maintained at item po level and print the same with form..
    I am passing following parameters in my Include text in smartforms..
    Text name         &VAR6& ..... concatenated po number and item
                            ( 4700000011 + 00010) = 470000001100010
    Text object       EKKO
    Text ID             F01
    Language          EN
    but its failing to fetch the same....I guess the problem is with var6 value...not sure
    also for material po text i m passing
    Text name         &G_ZEKPO-MATNR&  ..
    Text object       MATERIAL
    Text ID           BEST
    Language          EN
    This is also failing.....
    In both cases text is maintained...  what is the problem??
    Pls help..

    See this sample code
    ABAP READ_TEXT functions to read the SAP Long Text
    You have to used the READ_TEXT functions to read the SAP long text. e.g. Sales Order, Purchase Order Item text etc.
    To check your long text header, go into the long text. Click Goto -> Header
    Example of READ_TEXT functions reading tables PBIM - Independent requirements for material.
    REPORT ZTEXT .
    TABLES: PBIM.
    stxh, stxl, stxb - trans tables for text
    ttxit - text on text-ids
    ttxot - Short texts on text objects
    Transaction MD63
    SELECT-OPTIONS: S_MATNR FOR PBIM-MATNR,
                    S_WERKS FOR PBIM-WERKS.
    DATA: BEGIN OF HTEXT.
            INCLUDE STRUCTURE THEAD.
    DATA: END OF HTEXT.
    DATA: BEGIN OF LTEXT OCCURS 50.
            INCLUDE STRUCTURE TLINE.
    DATA: END OF LTEXT.
    DATA: BEGIN OF DTEXT OCCURS 50.
    DATA:   MATNR LIKE PBIM-MATNR.
            INCLUDE STRUCTURE TLINE.
    DATA: END OF DTEXT.
    DATA: TNAME LIKE THEAD-TDNAME.
    SELECT * FROM PBIM WHERE WERKS IN S_WERKS.
      MOVE PBIM-BDZEI TO TNAME.
      CALL FUNCTION <b>'READ_TEXT'</b>
           EXPORTING
              CLIENT                  = SY-MANDT
              ID                      = 'PB'
              LANGUAGE                = 'E'
              NAME                    = TNAME
              OBJECT                  = 'PBPT'
            ARCHIVE_HANDLE          = 0
         IMPORTING
              HEADER                  = HTEXT
         TABLES
              LINES                   = LTEXT
         EXCEPTIONS
              ID                      = 1
              LANGUAGE                = 2
              NAME                    = 3
              NOT_FOUND               = 4
              OBJECT                  = 5
              REFERENCE_CHECK         = 6
              WRONG_ACCESS_TO_ARCHIVE = 7
              OTHERS                  = 8.
      LOOP AT LTEXT.
        IF LTEXT-TDLINE NE ''.
          MOVE LTEXT-TDLINE TO DTEXT-TDLINE.
          MOVE PBIM-MATNR TO DTEXT-MATNR.
          APPEND DTEXT.
        ENDIF.
      ENDLOOP.
    ENDSELECT.
    LOOP AT DTEXT.
      WRITE:/ DTEXT-MATNR, DTEXT-TDLINE.
    ENDLOOP.
    http://www.sapdevelopment.co.uk/sapscript/sapscript_texts.htm
    Also
    *Internal table to store standard texts
    DATA: IT_TEXTS like T_LINE occurs o with header line.
    CALL FUNCTION 'READ_TEXT'
         EXPORTING
            CLIENT                  = SY-MANDT
              id                      =       "Text ID
              language                =       "Laguage
              name                    =       "Text name
              object                  =       "text object
            ARCHIVE_HANDLE          = 0
       IMPORTING
            HEADER                  =
         tables
              lines                   = IT_TEXTS   "Internal table
       EXCEPTIONS
            ID                      = 1
            LANGUAGE                = 2
            NAME                    = 3
            NOT_FOUND               = 4
            OBJECT                  = 5
            REFERENCE_CHECK         = 6
            WRONG_ACCESS_TO_ARCHIVE = 7
            OTHERS                  = 8
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

  • How can I read only a line of text from a file, line by line using Scanner?

    Here's the code I currently have for a program that finds a keyword from numerous files and prints every line in every file that has that keyword. The keyword is indicated by the first parameter in a command line and the files are every parameter after that. Right now, with the code I have, the program will not print multiple lines of each file if they contain the keyword. I am trying to solve this problem by figuring out a way to have a loop continue until an \n EOL character is found. I am not sure how to do this though. Here's the portion of code that I would like to change to do this. I need to add a condition somewhere after in.hasNext() I think to stop when it it hits a /n.:
    while (in.hasNext()) {
                        count++;
                        String nextWord = in.next();
                        lineOfText.add(nextWord);
                        if (nextWord.equals(keyword)) {
                            flag = true;
    import java.util.Scanner;
    import java.io.IOException;
    import java.io.FileNotFoundException;
    import java.io.FileInputStream;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    public class Find {
        static ArrayList<String> lineOfText = new ArrayList<String>();
        static boolean flag = false;
        public static void main(String args[]) {
                   run(args);
        public static void run(String args[]) {
            try {
                PrintWriter out = new PrintWriter("output.txt");
                String keyword = args[0];
                for (int i = 1; i < args.length; i++) {
                    Scanner in = new Scanner(new FileInputStream(args));
    int count = 0;
    while (in.hasNext()) {
    count++;
    String nextWord = in.next();
    lineOfText.add(nextWord);
    if (nextWord.equals(keyword)) {
    flag = true;
    if (flag == true) {
    System.out.print(args[i] + ": " );
    out.print(args[i] + ": " );
    for (String s : lineOfText) {
    System.out.print(s + " ");
    out.print(s + " ");
    System.out.print("\n");
    out.println(" ");
    lineOfText.clear();
    out.close();
    catch (FileNotFoundException e) {
    System.out.println("file not found!");
    catch (IOException e) {
    System.out.println(e);
    Thanks

    Well, I thought I had this program finished, then I realized I need to match the keyword anywhere in the file(including within a word) and print out each line that "contains" the keyword in each file. So, I need some way of testing to see if the keyword is a part of each word and then flag the line that contains the keyword. Is there some method to do this? Thanks
    Here's the code I have now:
    import java.util.Scanner;
    import java.io.IOException;
    import java.io.FileNotFoundException;
    import java.io.FileInputStream;
    import java.io.PrintWriter;
    public class Find {
        static String line = "";
        static boolean flag = false;
        static boolean flag2 = false;
        public static void main(String args[]) {
                    run(args);
        public static void run(String args[]) {
            try {
                PrintWriter out = new PrintWriter("output.txt");
                String keyword = args[0];
                System.out.print("Searching for the keyword: " + keyword);
                out.print("Searching for the keyword: " + keyword);
                System.out.print("  in files: ");
                out.print("  in files: ");
                for (int k = 1; k < args.length; k++)
                     System.out.print(args[k] + " ");
                     out.print(args[k] + " ");
                     System.out.println("\n");
                     out.println("");
                     out.println("");
                for (int i = 1; i < args.length; i++) {
                    Scanner in = new Scanner(new FileInputStream(args));
    while (in.hasNextLine()) {
    line = in.nextLine();
    String[] splitLine = line.split(" ");
    for (int j=0; j < splitLine.length; j++) {
    if (splitLine[j].equals(keyword) && flag2 == false) {
    flag = true;
    flag2 = true;
    System.out.print(args[i] + ": " + line + "\n");
    out.println(args[i] + ": " + line);
    flag2 = false;
    System.out.print("\n");
    out.println(" ");
    out.close();
    catch (FileNotFoundException e) {
    System.out.println("file not found!");
    catch (IOException e) {
    System.out.println(e);

  • Getting Message no. TD600 while reading sales order line item text

    Dear Experts,
    I want to read  text from sales order line item through ABAP, but unable to fetch the text data in the program & getting the below message: Text 0020001169 ID Z003 language EN not found.
    But in the same program I can fetch Header text data, that means the text read program is correct. If anybody faced the same issue & already solved the same then please let me know the solution so that I can get out of that problem.
    Thanks in Advance,
    Vishal.

    As per the message no. you have posted. it is clear that respective text record doesnt exist in the database.
    Maintain Text record in Tcode:SO10
    Text  Name: 0020001169
    Text ID: Z003
    language EN
    Now try & revert.

  • I want to delete one line of text and add new text.  Is that possible?

    I have exported the document and can add information but cannot delete a line of information to put correct information in.  Is it possible and, if so, how can you do it?

    Hi madelyn,
    I'm happy to help, but need al little more information from you. What did you convert from/to? Did you start with a PDF and convert to Word, for example? Or convert a file to PDF? Your answer to that question will help me provide you with the information that you need.
    Best,
    Sara

  • After each line of text and radio buttons are these squares with numbers inside them. How do I turn them off? Only on firefox does this display happen.

    Numbers seem to be in order. they look like modeling codes used when setting up a website.
    I did not have this problem until I upgraded to the new firefox update.

    Try to set the Boolean pref <b>gfx.font_rendering.directwrite.use_gdi_table_loading</b> to <i>false</i> on the <b>about:config</b> page to see if that helps.
    *http://kb.mozillazine.org/about:config
    Which numbers are in the boxes?
    If you see a box with hex code in it then that means that Firefox can't map a character to a specific font and you have to install a font that covers the affected characters.
    * http://en.wikipedia.org/wiki/Supplementary_Multilingual_Plane

  • In iBooks, I can't highlight the top line of text, and sometimes bookmarks I place appear on the adjacent page.

    This has been taking place ever since I upgraded to the iPhone 4S and with it iOS 5. This never happened on any of my previous iPhones or versions of iOS. This problem has occurred ever since October when I upgraded, and has persisted through all version upgrades of iBooks and iOS. It is annoying the **** out of me as I use iBooks frequently.

    Clear the cache and the cookies from sites that cause problems.
    "Clear the Cache":
    * Tools > Options > Advanced > Network > Offline Storage (Cache): "Clear Now"
    "Remove Cookies" from sites causing problems:
    * Tools > Options > Privacy > Cookies: "Show Cookies"
    Start Firefox in <u>[[Safe Mode]]</u> to check if one of the extensions is causing the problem (switch to the DEFAULT theme: Firefox (Tools) > Add-ons > Appearance/Themes).
    *Don't make any changes on the Safe mode start window.
    *https://support.mozilla.com/kb/Safe+Mode
    *https://support.mozilla.com/kb/Troubleshooting+extensions+and+themes

  • Reading Individual Lines of Text Into An ArrayList or Vector From A File

    I am trying to read each individual line of text of a .txt file into an ArrayList or Vector. I seem to get the same results no matter which Object I am using (ArrayList or Vector). The text file is a comma-delimited text file to be used as a database. I want to separate each line as an individual record then dump it into an ArrayList or Vector and have them loop through a StringTokenizer() class so that I can be sure each line has the correct number of fields before I commit it to a serialization file. Currently, the proper amount of records seems to be forming in the initial part of the program, I am just remiss at properly placing them in the Vector, or StringTokenizer classes so I can further manipulate them. I'm using the LineNumberReader class to get line numbers to use as record numbers and for loop indexes. I'm not sure (obviously) if this is a correct way to do it or not.
    Any help is greatly appreciated in advance.
    Thanks for all your time.
    int n = 0;
              try {
                    * read each individual line and count it as a separate record. 
                    * place each record into an array or may be a string if it has 9 tokens
                    * if a record hasn't got 9 tokens, it isn't a record
                    * place each array or string into a Vector
                   in = new LineNumberReader(new FileReader(filename));
                             while ((record = in.readLine()) != null) {
                             n = in.getLineNumber();
                             rawData = new Vector();     
                             for (int i = 0; i < n; i++) {
                                  rawData.add(record);     
                             if (record == null)
                             break;
    *The following System.out.println() statement shows that all lines are correctly retrieved from the text file
    *as separate records
                        System.out.println("Record No. " + n +  "= " + record);     
                   //Debug
    /** When these print lines execute it reveals that only the last record has been inserted into the Vector as
    *    many times as I have records in the text file.
                        System.out.println("Number of Records = " + n);
                        System.out.println("VectorSize = " + rawData.size());
                        System.out.println("First rawDataElement = " + rawData.firstElement());
                        System.out.println("Second rawDataElement = " + rawData.get(1));
                        System.out.println("Third rawDataElement = " + rawData.get(2));
                        System.out.println("Fourth rawDataElement = " + rawData.lastElement());
    *  Next run each record through a StringTokenizer to be sure that there the correct number of fields present
    *  If it contains the correct number of fields, dump it into an alternate ArrayList or Vector.
    *  As it is now, the StringTokenizer gives a NullPointerException
                        for (int i = 0; i < n; i++) {
                             StringTokenizer recordSet = new StringTokenizer((String) table.get(n), ",");
                                 while (recordSet.hasMoreTokens()) {
                                     if (recordSet.countTokens() == 9) {
                                           data = new Vector();
                                           data.add((Object) recordSet.nextToken(","));
                                           System.out.println("Vector data size = " + data.size());
                                           System.out.println("Second dataElement = " + data.get(0));
                            System.out.println("String Tok recordSet = " + recordSet.countTokens());                                  System.out.println("Number of Records = " + n);
                        System.out.println("First dataElement = " + data.firstElement());
                        System.out.println("Second dataElement = " + data.get(0));
                        System.out.println("Third dataElement = " + data.get(2));
                        System.out.println("Fourth dataElement = " + data.lastElement());
                   } catch (FileNotFoundException e) {
                        System.out.println(e);
                   } catch (IOException e) {
                        System.out.println(e);
         }

    I think your logic is broken.
    rawData = new Vector();
    creates a new instance of Vector for every record.
    Your add() within a for loop adds the same record to the Vector n times. I think what you really want is something like this:in = new LineNumberReader(new FileReader(filename));
    rawData = new Vector();
    while ((record = in.readLine()) != null) {
        n = in.getLineNumber();
        rawData.add(record);     Mark

  • Problems rendering Every-line Composer texts with Adobe Media Encoder

    I find the text paragraph setting "Adobe Every-line Composer" a huge time saver when dealing with large amounts of text in after effects. I rarely have to do any manual tracking or line breaks to make it look good, as opposed to working with the standard Single-line Composer.
    The problem is that when I render through Adobe Media Encoder (which I'm forced to do since they removed H264-mp4 support from AE:s internal renderer) the text is treated like single-line composed text. So the final render doesn't look like my AE project.
    I've found two solutions to this problem:
    1. Render a lossless video file in the AE renderer and then compress it with Media Encoder. This takes more time and HDD space, and it doesn't allow me to continue working in AE while rendering.
    2. Only use Single-line composed text and make all adjustments manually, the old school way. This would not be a problem if I had not already used, and fallen in love with, the Every-line option.
    Is there anyone that can think of a third, and preferably better, solution?
    I use the CC 2014 versions of AE and AMC.

    No, the text doesn't animate at all. It's just a normal static text box. The text part is extremely simple. All animations are done in other layers and pre-comps, combined with pre-rendered 3D graphics from Cinema 4D, rendered as image sequences. My problem is a bug, plain and simple. Or perhaps you could call it a "lack of feature support" or an "incompatibility between AE and Adobe Media Encoder".
    My problem appears only when my AE project has text boxes with the "Every-line Composer" option enabled (press the menu button in the Paragraph window to find it), AND the project is rendered through Adobe Media Encoder, no matter which output format I use. I have no problems what so ever inside of after effects, or when rendering Single-line Composer text in AMC.
    So, the problem is that Media Encoder doesn't recognize Every-line composed text. Instead it changes it to Single-line composed text, messing up text tracking and line breaks.
    To clarify: the Adobe Every-line Composer is analyzing the entire text box instead of only the current line. That way it can automatically change the tracking of individual lines to better distribute the line breaks and build a better whole, avoiding those stray words on the last line for example. Extremely handy, if you could only render it.
    I never wrote anything about animating text or that the codec is related to the text problems in any way. AMC is the problem. The codec is only a secondary problem since its the lack of mp4 H264 support that forces me to use Media Encoder in the first place, instead of using the AE render queue as I did in previous versions of AE. I like many things about rendering through AMC, like being able to continue working in AE while rendering, but there are still way too many glitches. And of course, there's the inability to render flv-files in AMC CC 2014, and Adobe's inability to provide a solution other than "Use an older version of AMC". Flv is their own damn format for christ's sake.
    Well, enough rambling.
    To put it simple:
    Has anyone had a problem with "Every-line Composer" in combination with Adobe Media Encoder? Did you find a solution other than the two less-than-perfect ones in my first message?
    Thanks!

  • I want to read the content of a text file dropped in a watched folder into a string variable

    I have a workbench process with 2 variable.
    inDoc (DataType=Document/input/required)
    outStr (DataType = String/output)
    The document being passed to the workflow is a text file with 4 lines of text in it.  when the text file is dropped into the watched folder, it will be assigned to the inDoc parameter in the workflow.
    My workflow needs to extract the 4 lines of text and write it into a string (outStr).
    Id like to use the FileUtilsService.ReadString service but i can't since its input parameter is the file path.  When i do, i get the following error...
    Caused by: ALC-FUT-001-011: File rO0ABXNyABZjb20uYWRvYmUuaWRwLkRvY3VtZW50yAEFUxsO+CEDACNJAAtfY2FsbGJhY2tJZFoADV9kZXNlcmlhb Gl6ZWRJABBfZGlzcG9zYWxUaW1lb3V0WgAJX2Rpc3Bvc2VkWgAZX2lzRGlzcG9zYWxUaW1lb3V0RGVmYXVsdFoAE19 pc1RyYW5zYWN0aW9uQm91bmRKAAdfbGVuZ3RoSQAOX21heElubGluZVNpemVaAAhfb3duRmlsZVoAC19wYXNzaXZhd GVkWgALX3BlcnNpc3RlbnRJABFfc2VuZGVyQ2FsbGJhY2tJZFoAEV9zZW5kZXJQYXNzaXZhdGVkWgARX3NlbmRlclB lcnNpc3RlbnRJAA5fc2VuZGVyVmVyc2lvbkkABl9zdGF0ZUwAC19hdHRyaWJ1dGVzdAATTGphdmEvdXRpbC9IYXNoT WFwO0wACF9jYWNoZUlkdAAfTGNvbS9hZG9iZS9pZHAvRG9jdW1lbnRDYWNoZUlEO0wADF9jYWxsYmFja1JlZnQAIUx jb20vYWRvYmUvaWRwL0lEb2N1bWVudENhbGxiYWNrO0wADF9jb250ZW50VHlwZXQAEkxqYXZhL2xhbmcvU3RyaW5nO 0wAC19kYXRhQnVmZmVydAAeTGNvbS9hZG9iZS9zZXJ2aWNlL0RhdGFCdWZmZXI7TAAPX2V4cGlyYXRpb25UaW1ldAA QTGphdmEvbGFuZy9Mb25nO0wABV9maWxldAAOTGphdmEvaW8vRmlsZTtMABBfZ2xvYmFsQmFja2VuZElkdAAhTGNvb S9hZG9iZS9pZHAvRG9jdW1lbnRCYWNrZW5kSUQ7WwAHX2lubGluZXQAAltCTAAMX2lucHV0U3RyZWFtdAAVTGphdmE vaW8vSW5wdXRTdHJlYW07TAAPX2xvY2FsQmFja2VuZElkcQB+AAhMAAxfcHVsbFNlcnZhbnR0ACRMY29tL2Fkb2JlL 2lkcC9JRG9jdW1lbnRQdWxsU2VydmFudDtMABFfcmFuZG9tQWNjZXNzRmlsZXQAGkxqYXZhL2lvL1JhbmRvbUFjY2V zc0ZpbGU7TAAVX3NlbmRlckNhbGxiYWNrUmVmSU9ScQB+AARMABZfc2VuZGVyR2xvYmFsQmFja2VuZElkcQB+AAhMA A1fc2VuZGVySG9zdElkcQB+AARMABVfc2VuZGVyTG9jYWxCYWNrZW5kSWRxAH4ACEwAGl9zZW5kZXJQdWxsU2VydmF udEpuZGlOYW1lcQB+AARMAARfdXJsdAAOTGphdmEvbmV0L1VSTDt4cHcGAAAAAwAAcHd1AHMwOjA6MDowOjA6MDowO jEvMTI3LjAuMC4xLy8vLy8vLy8vZmU4MDowOjA6MDo3NDMyOmU0OWQ6NmUzMToxNTU0JTEwLzEwLjI0LjIzOS4xMjY vZmU4MDowOjA6MDowOjVlZmU6YTE4OmVmN2UlMTEvLy8vdXIAAltCrPMX+AYIVOACAAB4cAAAAcRJTU01MjU3XzAxL TIwMTFfMXwwMXx8YXx8fHxGZW1hbGV8MjAwMHw2fDh8Y3wyNTZ8MjU2fDkxMnwwMXx8fHx8fHx8Tnx8fHx8fHx8fHx 8fHx8fHx8fHxZfHx8fHx8fHx8fDAyfHx8fHx8TnwyMDEyfDJ8MTR8DQpJTU01MjU3XzAxLTIwMTFfMnx8fHx8fHx8f Hxhc2RmfDI1NnwyMDEyfDAyfDAxfDIwMTJ8MDN8MDJ8fHx8YXxhfDI1Mnx8fHxZfHx8fHx8fHx8fHx8fHx8DQpJTU0 1MjU3XzAxLTIwMTFfM3xOfHx8fHx8fHx8fDIwMDB8Nnx8fGFzZGZ8YXNkZnxhc2RmfDI1Nnx8fHx8fHx8fHx8fHx8f Hx8fHx8DQpJTU01MjU3XzAxLTIwMTFfNHxOfE58fE58TnxOfHxOfE58fE58TnxOfA0KSU1NNTI1N18wMS0yMDExXzV 8U2luZ2xlfDAxfHwyMDEyfDAyfDE4fDIwMTJ8MDN8MDN8MjM0fGFzZGZ8fGFzZGZhc3x8fHxFeGNoYW5nZS1Qcm8uO S40MDEuRnVsbC5XSU4uZW5fQ0EuRU5VLTEwLTIwMTF8DQoNCnBwdwYAAAAAAAB0AAp0ZXh0L3BsYWlucHNyABFqYXZ hLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAA AADdAAKd3NmaWxlbmFtZXQAJ0M6XFVzZXJzXENodWxseS5QYXJrXERlc2t0b3BcaGRzY2FuLnR4dHQACGJhc2VuYW1 ldAAKaGRzY2FuLnR4dHQABGZpbGVxAH4AFXh3NwAtYWRvYmUvaWRwL0RvY3VtZW50UHVsbFNlcnZhbnQvYWRvYmVqY l9MQ19ERVYx//////////94 does not exist.
    at com.adobe.livecycle.fileutils.FileUtilsService.readDocument(FileUtilsService.java:363)
    which is what i expected...
    I've also tried with the Script.executeScript to call some java code but im not too strong in java and in all the examples i find, the file pointer requires a file path.
    import java.io.*;
    FileInputStream f = new FileInputStream(patExecContext.getProcessDataValue("/process_data/inDoc"));
    OR
    File f = new File(patExecContext.getProcessDataValue("/process_data/inDoc"));
    OR
    File f = patExecContext.getProcessDataValue("/process_data/inDoc");
    Any clue how to resolve my problem?

    Try the following code snippet to read the String content from the file recieved through watched folder endpoint.
    com.adobe.idp.Document inputDoc = patExecContext.getProcessDataDocumentValue("/process_data/inDoc");
    java.io.InputStream inStream = inputDoc.getInputStream();
    byte[] dataBuffer = new byte[inStream.available()];
    inStream.read(dataBuffer);
    String strData = new String(dataBuffer);
    patExecContext.setProcessDataStringValue("/process_data/outStr",strData);
    The code is not tested, hence if you find any mistakes, correct and test the functionality.
    Nith

Maybe you are looking for