2016-11-05 4 views
0

私はこのプログラムを私の割り当てに書いています。主な考え方は、addItemが呼び出されたときにテキストファイルを作成し、そのファイルのユーザーからの注文を書き込むことです。しかし、それはファイルを作成するだけで、内部には何も印刷しません。私はユーザーからの名前とそれに書き込むテキストファイルを作成したいですか?

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.OutputStreamWriter; 
import java.io.PrintWriter; 
import java.io.Writer; 


public class OrderedFood extends Food { 

private int quantity; 
private boolean isSet; 
private SetDrink setDrink; 


public OrderedFood(){ 
    quantity = 0; 
    isSet = false; 
    setDrink = null; 
} 

public OrderedFood(String foodCode, String foodName,boolean isSet, SetDrink setDrink, int quantity){ 
    super(foodCode, foodName); 
    this.isSet = isSet; 
    this.quantity = quantity; 
    this.setDrink = setDrink; 
} 

public int getquantity(){ 
    return quantity; 
} 

public void setquantity(int quantity){ 
    this.quantity = quantity; 
} 

public boolean getIsSet(){ 
    return isSet; 
} 
public void setisSet(boolean isSet){ 
    this.isSet = isSet; 
} 
public SetDrink getsetDrink(){ 
    return setDrink; 
} 
public void setsetDrink(SetDrink setDrink){ 
    this.setDrink = setDrink; 
} 

public void addItem (String foodCode, int TabNum)throws IOException{ 
    clearScreen(); // invoking the clearScreen method 


    String filename = Integer.toString(TabNum); 
    try 
    { 
     //this blocks creates a table by the table num 
     File file = new File("/tmp", filename);  
     System.out.println("path=" + file.getAbsolutePath()); 
     file.createNewFile(); 

     System.out.println("File created"); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
     System.out.println("Failed to create file"); 
    } 
    try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), "utf-8"))) 
    { 
     writer.write("foodCode"); // this syntax prints the order 
     writer.close(); 
    } 

} 
public void deleteItem(String foodCode , int TabNum)throws IOException{ 
    clearScreen(); 

    String Tab = Integer.toString(TabNum); 

    remove(Tab,foodCode);// we just invoke the remove method, which will then remove the item from the .txt file 
} 


public static void clearScreen() { // this method clears the screen. 
    System.out.print("\033[H\033[2J"); 
    System.out.flush(); 
    } 


public void remove(String file, String lineToRemove)throws IOException { 

     try { 

      File inFile = new File(file); 

      if (!inFile.isFile()) { 
       System.out.println("Parameter is not an existing file"); 
       return; 
      } 

      File tempFile = new File(inFile.getAbsolutePath() + ".tmp"); 

      BufferedReader buff = new BufferedReader(new FileReader(file)); 
      PrintWriter kap = new PrintWriter(new FileWriter(tempFile)); 

      String line = null; 


      while ((line = buff.readLine()) != null) { 

       if (!line.trim().equals(lineToRemove)) { 

        kap.println(line); 
        kap.flush(); 
       } 
      } 
      kap.close(); 
      buff.close(); 

      if (!inFile.delete()) { 
       System.out.println("Could not delete file"); 
       return; 
      } 

      if (!tempFile.renameTo(inFile)) 
       System.out.println("Could not rename file"); 

     } catch (FileNotFoundException ex) { 
      ex.printStackTrace(); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
     } 

    } 
+0

このコードは、 'file.createNewFile()'を使って新しいファイルを作成するだけです。おそらく、自分でファイルにデータを書き込むコードを追加する必要があります。 – kgeorgiy

+0

ええ、ファイルの名前はユーザーから来ているので、ファイルに書き込むために共通のコードを使用しようとすると、ファイルの名前を尋ねます。 'PrintWriter writer = new PrintWriter(" the-file-name.txt " 、 "UTF-8")。 writer.println( "最初の行"); ' –

+0

' PrintWriter' [コンストラクタ](http://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html#PrintWriter)があります。 -java.io.File-java.lang.String-) 'File'を受け取ります。 – kgeorgiy

答えて

0

あり、あなたはファイル名を使用し書き込むためのファイルを開くときにも、拡張子を言っていないファイルを作成している論理的な間違いがあるが、それは唯一のtabnumberない以下のコードを使用してファイルへの完全なパスが含まれています

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.OutputStreamWriter; 
import java.io.PrintWriter; 
import java.io.Writer; 


public class OrderedFood extends Food { 

private int quantity; 
private boolean isSet; 
private SetDrink setDrink; 


public OrderedFood(){ 
    quantity = 0; 
    isSet = false; 
    setDrink = null; 
} 

public OrderedFood(String foodCode, String foodName,boolean isSet, SetDrink setDrink, int quantity){ 
    super(foodCode, foodName); 
    this.isSet = isSet; 
    this.quantity = quantity; 
    this.setDrink = setDrink; 
} 

public int getquantity(){ 
    return quantity; 
} 

public void setquantity(int quantity){ 
    this.quantity = quantity; 
} 

public boolean getIsSet(){ 
    return isSet; 
} 
public void setisSet(boolean isSet){ 
    this.isSet = isSet; 
} 
public SetDrink getsetDrink(){ 
    return setDrink; 
} 
public void setsetDrink(SetDrink setDrink){ 
    this.setDrink = setDrink; 
} 

public void addItem (String foodCode, int TabNum)throws IOException{ 
    clearScreen(); // invoking the clearScreen method 


    String filename = Integer.toString(TabNum); 
    try 
    { 
     //this blocks creates a table by the table num 
     File file = new File("/tmp", filename);  
     System.out.println("path=" + file.getAbsolutePath()); 
     file.createNewFile(); 
     filename = file.getAbsolutePath(); //here the actual address is updated to use later 

     System.out.println("File created"); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
     System.out.println("Failed to create file"); 
    } 
    try 
    { 
     //now here we need that address updated earlier not just the tabnumber 
     PrintWriter writer = new PrintWriter(filename, "UTF-8"); 
     writer.print("food code"); 
     riter.close(); 
    } 

} 
public void deleteItem(String foodCode , int TabNum)throws IOException{ 
    clearScreen(); 

    String Tab = Integer.toString(TabNum); 

    remove(Tab,foodCode);// we just invoke the remove method, which will then remove the item from the .txt file 
} 


public static void clearScreen() { // this method clears the screen. 
    System.out.print("\033[H\033[2J"); 
    System.out.flush(); 
    } 


public void remove(String file, String lineToRemove)throws IOException { 

     try { 

      File inFile = new File(file); 

      if (!inFile.isFile()) { 
       System.out.println("Parameter is not an existing file"); 
       return; 
      } 

      File tempFile = new File(inFile.getAbsolutePath() + ".tmp"); 

      BufferedReader buff = new BufferedReader(new FileReader(file)); 
      PrintWriter kap = new PrintWriter(new FileWriter(tempFile)); 

      String line = null; 


      while ((line = buff.readLine()) != null) { 

       if (!line.trim().equals(lineToRemove)) { 

        kap.println(line); 
        kap.flush(); 
       } 
      } 
      kap.close(); 
      buff.close(); 

      if (!inFile.delete()) { 
       System.out.println("Could not delete file"); 
       return; 
      } 

      if (!tempFile.renameTo(inFile)) 
       System.out.println("Could not rename file"); 

     } catch (FileNotFoundException ex) { 
      ex.printStackTrace(); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
     } 

    } 
+0

ありがとう、今働いて –

+0

作業とupvote場合でもソリューションとしてマーク –

+0

ファイル名の拡張子は必要ありません –

関連する問題