2014-12-10 2 views
1

Я пытаюсь записать в текстовый файл. Однако я могу писать на консоль, я не могу писать в свой текстовый файл. Одна вещь, которую я заметил, это то, что String data не содержит каких-либо данных, если бы я просто печатал на консоль, что, вероятно, почему ничего не появляется в моем текстовом файле. Кто-нибудь знает, почему это так и как я могу это сделать?Метод writeFile() не работает

WriteFile() метод Код:

public static void writeFile(String filename, String content) throws IOException 
    { 
     try 
     { 
      Files.write(Paths.get(filename), content.getBytes()); // write file 
     } 
     catch (IOException e) 
     { 
      System.out.println("Error writing file: " + e); 
     } 
    } 

Код испытания:

public class QuickTest { 
    public static void main(String... p) throws IOException { 

     List<SensorInfo> readings = new ArrayList<>(); 
     SensorInfo info = null; 

     String data = createStringFromInfo(readings); 
     writeFile("datastore.txt", data); 

     String filedata = readFile("client-temp.txt"); 

     List<SensorInfo> temps = createInfoFromData(filedata); 

     System.out.println(header()); 

     for (SensorInfo reading : temps) { 
      System.out.print(reading.display()); 

     } 


    } 

} 

CreateFromInfo Метод:

public static String createStringFromInfo(List<SensorInfo> infoList) 
    { 
     String data = ""; 
     for (SensorInfo info : infoList) 
     { 
      data += info.asData(); 
     } 
     return data; 
    } 

createInfoFromData

public static List<SensorInfo> createInfoFromData(String data) 
    { 
     List<SensorInfo> infoList = new ArrayList<>(); 

     String[] lines = data.split("\n"); 

     for (String line : lines) 
     { 
      SensorInfo info = new SensorInfo(line); 
      infoList.add(info); 
     } 

     return infoList; 
    } 
+0

Нам нужно будет увидеть метод 'createStringFromInfo()', чтобы убедиться, почему 'data' не содержит данных, но я предполагаю, что это потому, что вы передаете пустой список этому методу. –

+0

@JohnBollinger Пожалуйста, найдите метод createStringFromInfo(), написанный выше. – rr0102

+1

Вы создаете новый 'ArrayList', а затем читаете его содержимое. Откуда берутся данные? – Tom

ответ

0

что реализация createStringFromInfo() подтверждает мое предположение: он вернет пустую строку, если ее аргумент является пустым списком, как это происходит в вашей программе. Я согласен с вами, поэтому вы получаете пустой файл.

Вы можете исправить это, заполнив список readingsSensorInfo объектами, описывающими информацию, которую вы хотите записать в файл (перед тем, как вы вызовете createStringFromInfo()). Если данные для тех объектов SensorInfo должны поступать из файла чтения «client-temp.txt», тогда вы должны сначала прочитать его, затем передать , чтобыList - createStringFromInfo(), чтобы получить данные для записи.

+0

Да, данные получены от чтения файла «client-temp.txt». Я прочитал его вначале, а затем за этим списком в createStringFromInfo(), и он, похоже, все еще создает пустой текстовый файл. – rr0102

+0

. Просматривает ли файл фактически какие-либо объекты 'SensorInfo'? Создает ли 'SensorInfo.asData()' непустую 'String'? Является ли 'String' возвращенным' createStringFromInfo() 'тем, который вы передаете' writeFile() '? Ваша программа, вероятно, падает в одном из этих мест. –

+0

, когда я распечатываю список массивов после чтения в файле, он печатает пустой массив. И я также попытался напечатать «данные» и ничего не производит – rr0102

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