2013-12-25 1 views
2

Эй, вот мой код, я создал свою простую программу для создания файлов, поскольку я использовал только java за последние 2 дня. Я только 13 так что будьте просто :)Как создать/изменить содержимое файла, прежде чем создавать его в программе Java, которую я создал?

import java.io.File; 
import java.io.IOException; 
import java.util.Scanner; 

public class Filecreator 
{ 
    public static void main(String[] args) 
    { 
     Scanner read = new Scanner (System.in); 
     String y; 
     String u; 


     try { 
      System.out.println("Please enter the name of your file!"); 

      y = read.next(); 

      while (y.contains(".") || y.contains(",") || y.contains("{") || y.contains("}") || y.contains("@")){ 
       System.out.println("Your Filename contains an incorrect character you may only use Number 0-9 And Letters A-Z"); 
       System.out.println("Please Re-enter your file name"); 

       y = read.next();   
      } 

      System.out.println("Please enter the file type name"); 

      u = read.next(); 

      while (u.contains(".") || u.contains(",") || u.contains("{") ||  u.contains("}") || u.contains("@")){ 
       System.out.println("Your File-type name contains an incorrect character  you may only use Number 0-9 And Letters A-Z"); 
       System.out.println("Please Re-enter your file-type name"); 

       u = read.next(); 
      } 


      File file = new File(y + "." + u); 


      if (file.createNewFile()){ 
       System.out.println("File is created!"); 
      System.out.println("The name of the file you have created is called " + y + file); 
      }else{ 
       System.out.println("File already exists."); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Если вы запустите его на такие программы, как Eclipse, вы увидите результат. Но я хочу, чтобы иметь возможность редактировать содержимое [файла], прежде чем я, наконец, выберу имя и тип файла, а затем сохраню его. В любом случае я могу это сделать? Спасибо - George

+0

Извините. Не понял. Вы хотите изменить то, что еще не создано? –

+0

Предлагаю вам создать свою программу с (по крайней мере) двумя другими методами. Один, чтобы построить 'OutputStream' (например,' FileOutputStream'). И, во-вторых, использовать этот 'OutputStream' для вычисления и записи вашего * вывода *. Возможно, вы захотите использовать мой [OutputStreamMultiplier] (http://www.frischcode.com/2013/11/need-to-write-same-content-to-multiple.html). –

+0

Я думаю, что этот ответ показывает много исследований для 13-летнего. Однако отредактируйте свой вопрос и уточните, является ли это содержимым файла, который вы хотите изменить. Я просто догадывался об этом. – KarlP

ответ

0

прочитанной строки, пока строка не содержит специального конца-файла маркер. Например, старая программа unix «mail» добавляет все строки до строки, состоящей из одного «.». читается.

// insert this before reading the filename 
StringBuilder content = new StringBuilder(); 

s = read.next(); 

    while(!s.equals(".")) { 
     content.append(s); 
     content.append(String.format("%n")); 
     s = read.next(); 
    } 

Взгляд на это: write a string into file (лучше ответ, чем другие) и использовать его в качестве примера того, как на самом деле записать содержимое в файл, после того, как он был создан.





P.S.

Pro-tip: Я уверен, что вы заметили, что вы дублировали точно такую ​​же строку для проверки правильности имени файла. Хороший программист заметил бы это и «извлек» метод, который делает логику в одном месте.

Пример:

boolean isValidFilename(String s) { 
    return !(y.contains(".") || y.contains(",") || y.contains("{") || y.contains("}") || y.contains("@"))); 
} 

Вы можете затем заменить чеки;

while (!isValidFilename(u)){ 
    System.out.println("Your File-type name contains an incorrect character...etc"); 
}   

Это хорошо, так как вам не придется повторять хитрый код, который означает, что есть меньше мест, чтобы сделать ошибки. Btw, отрицания (!) Там, чтобы избежать негативных имен (недействительная = истина) потому что вы можете получить двойное отрицание при их использовании (не invalid = true), и это может быть немного запутанным.

+0

Спасибо, что отредактировал его и помог мне :) Я изо всех сил старался – user3133573

0

Вы не можете отредактировать файл перед его созданием. Вы можете вносить изменения в данные, которые собираетесь писать в файл, после того, как вы их наберете; поскольку вы контролируете как эти данные, так и создание файла, проблем не должно быть.

1

В настоящее время вы распечатываете все на консоль - это делается при использовании System.out.println (...).

Что вы можете сделать, так это написать выход в другом месте. Как вы можете это сделать? Самый простой способ, как сделать это использовать StringBuilder:

http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html

Это пример кода:

StringBuilder sb = new StringBuilder(); 
sb.append("one "); 
sb.append("two"); 
String output = sb.toString(); // output contains string "one two" 

Теперь у вас есть весь свой вывод в одну строку. Если вы посмотрите на документацию StringBuilder (ссылка выше), вы можете увидеть, что есть другие полезные методы, такие как вставка или удаление, которые помогут вам изменить свой вывод, прежде чем преобразовать его в строку (с помощью метода toString). После того, как все ваши изменения будут выполнены, вы можете записать эту строку в файл.

Для написания строки в файл, это может быть полезно:

How do I save a String to a text file using Java?

Это достаточно хороший подход, если вы пишете маленькие файлы (до нескольких Мбайт). Если вы хотите писать большие файлы, вы не должны хранить всю строку в памяти, прежде чем записывать ее в файл. В таких сценариях вы должны создавать меньшие строки и записывать их в файл. Существует хороший учебник для этого:

http://www.mkyong.com/java/how-to-write-to-file-in-java-bufferedwriter-example/

 Смежные вопросы

  • Нет связанных вопросов^_^