【发布时间】:2019-01-18 22:03:32
【问题描述】:
我是 Android Studio 编程的初学者。我想制作如下所述的 apk:
- 按下按钮
- 整数1保存到txt文件中
- 如果我关闭 apk 并重新打开并再次按下按钮,我会得到 2 号到 txt 文件 并且这个过程重复(3,4,5...等)。
我需要做什么(在程序中):
- 如果文件不存在则创建文件
-
查看是否为txt。文件里面已经有一些数字并且这个数字+1,如果不存在(txt文件为空)我需要将整数值1添加到txt。文件。
下面是我的程序,public void length() 有问题 - 当我用 log.d 测试程序时总是显示空文件,但我被检查了文本文件。设备文件资源管理器中的文件,并在 txt.file 中有编号 1。我也在尝试使用 BufferdReader (br.readLine()) 并得到相同的结果。不知道问题出在哪里……
public class MainActivity extends AppCompatActivity {
Button btn;
private static int Counter = 0;
private static final String FILE_NAME = "data.txt";
private static String TAG="MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Counter++;
Log.d(TAG, "onClick: counter "+Counter);
saveChec();
Lengt();
//load();
// subSu();
}
});
}
private void subSu() {
}
public void Lengt(){
long length = new File(getFilesDir().getAbsolutePath() + FILE_NAME).length();
if (length == 0){
//get alvays empty..
Log.d(TAG, "Buff: empty ");
save(); //add value 1 to txt file
}else{
Log.d(TAG, "Buff: full");
}
}
public void saveChec() {
FileOutputStream fos = null;
try {
fos = openFileOutput(FILE_NAME, MODE_PRIVATE);
Log.d(TAG, "saveChec: crated file ");
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// return;
}
public void load() {
FileInputStream fis = null;
try {
fis = openFileInput(FILE_NAME);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
//get alvays null
if (br.readLine() == null) {
Log.d(TAG, "load: empty file ");
fis.close();
save();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private void save() {
FileOutputStream fos = null;
try {
fos = openFileOutput(FILE_NAME, MODE_PRIVATE);
int number = 1;
String numberAsString = Integer.toString(number);
fos.write(numberAsString.getBytes());
Log.d(TAG, "save: numberAsString "+numberAsString);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// return;
}
}
感谢您的回答!
【问题讨论】:
标签: java android android-studio