Проблемы ввода-вывода Java-файлов - PullRequest
0 голосов
/ 02 апреля 2012

Я впервые работаю с файловым вводом / выводом в Java, и он не работает. Раздел программы, в котором я анализирую отдельные строки и выводю строку, разделенную точкой с запятой, работает как талисман, когда я жестко кодирую файл и отображаю его на экране.

Когда я пытаюсь записать в файл public static OutputStream... ошибки как illegal start to expression, и я не смог заставить программу пройти через весь каталог файлов вместо одного за раз.

Где мне неясно: я отмечаю, что задаю имя выходного файла где угодно ... где я должен это делать? Переменная пути не пройдет. Какой правильный формат для пути? Кто-нибудь может увидеть, что мне нужно для отладки здесь?

import java.nio.*;
public class FileReadSSCCE
{
    public static void main(String args[])
    {
        try
        {
     Path startingDir = Paths.get("R:\Data\cs\RoboHelp\CorrLib\Output\Production\WebHelp");
      PrintFiles pf = new PrintFiles();
      Files.walkFileTree(startingDir, pf);
  // Get the object of DataInputStream
            DataInputStream in = new DataInputStream(fstream);
              BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String inputLine;
            String desc = "";
            String docNo = "";
  //Read File Line By Line
        while ((inputLine = br.readLine()) != null)
            {
                int testVal=0;
                int stringMax = inputLine.length();
//
                if(inputLine.startsWith("Description"))
                  {desc = inputLine.substring(13,inputLine.length());}
                   else
                   if(inputLine.startsWith("Reference Number"))
                     {docNo = inputLine.substring(20,inputLine.length());}    
            }    
// Print the content on the console
            String outStr1 = (desc + ";" + docNo);
            System.out.print(inputLine + "\n" + outStr1);
            String lineItem = (outStr1);
//    
            try (OutputStream out = new BufferedOutputStream
                 (logfile.newOutputStream(CREATE, APPEND)))
                 {
                     out.write(lineItem, 0, lineItem.length);
                 }
                 catch (IOException x)
                 {
                     System.err.println(x);
                 }
                 public static OutputStream newOutputStream() throws IOException
                 {
                       // append to an existing file, create file if it doesn't initially exist
                       out = Files.newOutputStream((Paths.get("c:\javaout.txt"), CREATE, APPEND);
                 }

//Close the input stream
            in.close();
       } 
       catch (Exception e)
       {
           //Catch exception if any
           System.err.println("Error: " + e.getMessage());
       }

   }
}

Ответы [ 3 ]

1 голос
/ 02 апреля 2012

Вы имеете в виду:

Path startingDir = Paths.get("R:/Data/cs/RoboHelp/CorrLib/Output/Production/WebHelp");

?

Также в вашем коде fstream не инициализируется.Скопировали ли вы логику кода в методе visitFile вашего посетителя?

И вы определили метод в своем основном методе, который не разрешен:

        public static OutputStream newOutputStream() throws IOException
        {  
            // append to an existing file, create file if it doesn't initially exist  
            out = Files.newOutputStream(c:, CREATE, APPEND);
        }
1 голос
/ 02 апреля 2012

В Files.newOutputStream(c:, CREATE, APPEND); вы получили синтаксическую ошибку из-за части c:.Вы должны передать экземпляр Path Files.newOutputStream().

Такой экземпляр можно получить одним из методов в Paths.

Аналогично, похоже, что вы намеревались инициализировать startingPath примерно так (используя строку):

Path startingPath = "R:\Data\cs\RoboHelp\CorrLib\Output\Production\WebHelp";

, но вам нужно использовать Paths для преобразованияString в Path:

Path startingPath = Paths.get("R:\Data\cs\RoboHelp\CorrLib\Output\Production\WebHelp");
0 голосов
/ 02 апреля 2012

Путь должен быть в двойных кавычках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...