Nano Hash - криптовалюты, майнинг, программирование

как много раз писать в файл в java?

Я задал тот же вопрос ранее, но я попробовал все данные ответь и никто не пойдет с моей прогой. Я создал метод, который записывает в файл и будет использовать этот файл другим методом. моя проблема, когда я хотел бы написать в другой раз. я хотел бы начать с начала файла, чтобы удалить содержимое. это мой класс, когда я использую if exist delete или BufferedWriter bw = new BufferedWriter(new FileWriter(f, false));, у меня будет только последняя строка выполнения. и я хотел бы, если бы я не мог использовать какой-то файл для чтения и записи через некоторое время.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;

import javax.swing.SwingWorker;

/**
 * 
 * @author 
 */
 class InstallApk extends SwingWorker<Integer, Integer>{

    // File wd = new File("/myhomedir/");
    private InputStream pi;
    public static String dir;
    public static String cmd;
    public static String log;
    public static String testPath ;
    public static ArrayList<String> mlog = new ArrayList();
    public static String userHome = System.getProperty("user.home");
    public static int value = 0;
    private static Process runningProcess = null;
    public static Process process;
    static File f = new File(testPath + "/logtest.txt");
    private static final int DELAY = 1000;


    public InstallApk() {

    }

    public static String getPath() {
        String decodedPath = null;
        try {
            String path = NewJFrame.class.getProtectionDomain()
                    .getCodeSource().getLocation().getPath();
                    String f = NewJFrame.class.getProtectionDomain().getCodeSource().getLocation().getFile();
                    //.getCodeSource().getLocation().getPath();
            // URLDecoder decoder = new URLDecoder();
            decodedPath = URLDecoder.decode(path, "UTF-8");
        } catch (Exception e) {
            e.printStackTrace();

        }
        return decodedPath;
    }


    public static void writeToFile(String text) {
        try {

            BufferedWriter bw = new BufferedWriter(new FileWriter(f, true));
            //FileWriter out = new FileWriter(f);
            bw.write(text);
            bw.newLine();
            bw.close();
            //out.close();

        } catch (Exception e) {

        }
    }


      protected Integer doInBackground() throws Exception {
        int i = 0;
        int count = 10;
        Runtime runtime = Runtime.getRuntime();
        process = runtime.exec(new String[] { "sh",
                testPath + "/install.sh", cmd });
        while (!isCancelled() && i < count) {
          i++;
          publish(new Integer[] { i });
          setProgress(count * i / count);
          Thread.sleep(DELAY);
        }

     // read process output first
        BufferedReader buf = new BufferedReader(
                new InputStreamReader(process.getInputStream()));
        String line = "";
        try {

            if(f.exists()){
                 f.delete();

             }
            while ((line = buf.readLine()) != null) {
                System.out.println("exec response: " + line);
                if(line.startsWith("Failure")){

                    mlog.add(line);

                }
                log = line;
                writeToFile(line);
                //WriteFile.write(line, f);
                value ++;
            }
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
         System.out.println("la valeur d'execution "+InstallApk.value);
        // only once we've run out of output can we call waitFor
        while (true) {
            try {
                return runningProcess.waitFor();
            } catch (InterruptedException e) {
                // do nothing, wait again
            } finally {
                Thread.interrupted();
            }
        }

      }

      protected void processus(List<Integer> chunks) {
        for (int i : chunks)
          System.out.println(i);
      }

      protected void arret() {
        if (isCancelled())
          System.out.println("Annuler");
        else
          System.out.println("Terminer");
      }

    }


Ответы:


1

RandomAccessFile из javadoc

Instances of this class support both reading and writing to a 
* random access file. A random access file behaves like a large 
* array of bytes stored in the file system. 
07.03.2013

2

Я просто использую printWriter и все.

protected Integer doInBackground() throws Exception {
        int i = 0;
        int count = 10;
        Runtime runtime = Runtime.getRuntime();
        process = runtime.exec(new String[] { "sh",
                testPath + "/install.sh", cmd });
        while (!isCancelled() && i < count) {
          i++;
          publish(new Integer[] { i });
          setProgress(count * i / count);
          Thread.sleep(DELAY);
        }
         File f = new File(testPath + "/logtest.txt");
     // read process output first
        BufferedReader buf = new BufferedReader(
                new InputStreamReader(process.getInputStream()));
        String line = "";
        try {


            PrintWriter writer = new PrintWriter(f, "UTF-8");



            while ((line = buf.readLine()) != null) {
                System.out.println("exec response: " + line);
                if(line.startsWith("Failure")){

                    mlog.add(line);

                }
                log = line;
                //writeToFile(line);
                writer.println(line);
                //WriteFile.write(line, f);
                value ++;
            }
            writer.close();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
         System.out.println("la valeur d'execution "+InstallApk.value);
        // only once we've run out of output can we call waitFor
        while (true) {
            try {
                return runningProcess.waitFor();
            } catch (InterruptedException e) {
                // do nothing, wait again
            } finally {
                Thread.interrupted();
            }
        }

      }
07.03.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..