我正在努力写作&将整数数组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的回答中复制)
答案 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];
}