编写和读取整数/字符串数组值到文件(Android应用程序开发)

时间:2014-08-29 02:27:54

标签: java android file bufferedreader bufferedwriter

我正在努力写作&将整数数组RED []和BLUE []读入文件。我已经尝试将它们转换成字符串并编写它们,希望它可以工作,但那里没有运气。我是在正确的轨道上吗?我已经尝试了DataOutputStreams,但这对我来说也没有用。

截至目前,我确信某些事情不对,因为这两个按钮都没有响应。该程序没有通过try {}。

写入档案

bSave.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                String FILENAME = name.getText().toString();

                try {
                    fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
                    BufferedWriter bw = new BufferedWriter(new FileWriter(FILENAME));
                    bw.write(Arrays.toString(paletteview.RED));
                    bw.write(Arrays.toString(paletteview.BLUE));
                    fos.close();

                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });

从文件中读取

listview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                String data=null;
                String FILENAME = savedarray[position];

                try {
                    String inputLine = null;
                    StringBuilder sb = null;

                    fis = openFileInput(FILENAME);
                    BufferedReader br = new BufferedReader(new FileReader(FILENAME));
                    while ((inputLine = br.readLine()) != null) {
                        sb.append(br.readLine());
                    }
                    fis.close();
                    data=sb.toString();
                    text.setText(data);

                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });

从文件中读取:尝试#2(添加textview以查看我的内容)

@Override
public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
    String data=null;
    String FILENAME = savedarray[position];
    File f = new File(FILENAME);
    if (f.exists) {
        textview.setText(FileManager.readFromFile(f));
    }
}

写入文件:尝试#2 (对于intArrayToString方法,请参阅下文)

    @Override
    public void onClick(View v) {
        if (name.getText().toString() != null){
            FILENAME = name.getText().toString();
            File f = new File(FILENAME);
            FileManager.writeToFile(f, intArrayToString(paletteview.RED));
        }
    }

intArrayToString(用于写入文件#2)

String intArrayToString(int[] array) {
    String text = "" + array[0];
    for (int i = 1; i < array.length; i++) {
        text += ","+array[i];
    }
    return text;

*文件管理器(从NoInspiration的回答中复制)

1 个答案:

答案 0 :(得分:-1)

您可以使用此类在文件中写入和读取字符串:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 * The <b>FileManager</b> class is a static class used to save <b>File</b> from
 * <b>String</b> and load <b>File</b> as <b>String</b>.
 * 
 * @version 1.0
 */
public class FileManager {

    /**
     * Load a <b>File</b> as a <b>String</b>.
     * 
     * @param file
     *            The file to load
     * @return The File as a String
     */
    public static String readFromFile(final File file) {
        String ret = "";

        try {
            FileInputStream inputStream = new FileInputStream(file);

            if (inputStream != null) {
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                String receiveString = "";
                StringBuilder stringBuilder = new StringBuilder();

                while ((receiveString = bufferedReader.readLine()) != null) {
                    stringBuilder.append(receiveString);
                }

                inputStream.close();
                ret = stringBuilder.toString();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return ret;
    }

    /**
     * Write a <b>String</b> as a <b>File</b>.
     * 
     * @param file
     *            The File where the data will be written
     * @param data
     *            The data to write
     */
    public static void writeToFile(final File file, final String data) {
        new Thread() {
            @Override
            public void run() {
                try {
                    FileOutputStream outputStream = new FileOutputStream(file);
                    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(
                            outputStream);
                    outputStreamWriter.write(data);
                    outputStreamWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.run();
    }

    /**
     * Private constructor of <b>FileManager</b>. <i>Static class should not be
     * instanced</i>
     */
    private FileManager() {
    }
}

你可以这样使用它:

FileManager.writeToFile(file, text);
text = FileManager.readFromFile(file);

对于Array的{​​{1}},您应该解析它们以在int中转换它们:

int到String的数组:

String

String to int:

text = "" + intArray[0];
for (int i = 1; i < intArray.length(); i++) {
    text += ","+intArray[i];
}