如何在文件末尾添加数字?
How to add numbers to the end of a file?
我正在尝试将文本文件写入外部存储器,我想知道如何附加到文件名以便我可以存储唯一文件而不是覆盖过去的文件。
同样,我在 android studio 的文件资源管理器中看到了该文件,但在我的 phone 上找不到它,当我使用模拟器时也会发生同样的事情,我不在文件资源管理器中看到它,但可以在使用设备资源管理器时验证它是否存在。
我的代码:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
Button btnSave, btnLoad;
EditText etInput;
TextView tvLoad;
String fileName = "";
String filePath = "";
String fileContent = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSave = findViewById(R.id.buttonSave);
btnLoad = findViewById(R.id.buttonLoad);
etInput = findViewById(R.id.etInput);
tvLoad = findViewById(R.id.tvLoad);
fileName = "myFile.txt";
filePath = "myFileDir";
if(!isExternalStorageAvailableForRW()){
btnSave.setEnabled(false);
}
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tvLoad.setText("");
fileContent = etInput.getText().toString().trim();
if(!fileContent.equals("")){
File myExternalFile = new File(getExternalFilesDir(filePath), fileName);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(myExternalFile);
fos.write(fileContent.getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
etInput.setText("");
Toast.makeText(MainActivity.this,"File Saved, check dir", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(MainActivity.this,"Textfield empty", Toast.LENGTH_SHORT).show();
}
}
});
}
private boolean isExternalStorageAvailableForRW() {
String extStorageState = Environment.getExternalStorageState();
if(extStorageState.equals(Environment.MEDIA_MOUNTED)){
return true;
}
return false;
}
}
对于
Java 7+
对于一次性任务,文件 class 让这变得简单:
try {
Files.write(Paths.get("filePath"), "the text".getBytes(), StandardOpenOption.APPEND);
}catch (IOException e) {
//exception handling left as an exercise for the reader
}
以上方法会抛出一个
NoSuchFileException
如果文件不存在。它也不会自动附加换行符(在附加到文本文件时通常需要这样做)。另一种方法是同时传递 CREATE 和 APPEND 选项,如果文件不存在,它将首先创建文件:
private void write(final String s) throws IOException {
Files.writeString(
Path.of(System.getProperty("java.io.tmpdir"), "filePath"),
s + System.lineSeparator(),
CREATE, APPEND
);
}
The Source
我正在尝试将文本文件写入外部存储器,我想知道如何附加到文件名以便我可以存储唯一文件而不是覆盖过去的文件。
同样,我在 android studio 的文件资源管理器中看到了该文件,但在我的 phone 上找不到它,当我使用模拟器时也会发生同样的事情,我不在文件资源管理器中看到它,但可以在使用设备资源管理器时验证它是否存在。
我的代码:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
Button btnSave, btnLoad;
EditText etInput;
TextView tvLoad;
String fileName = "";
String filePath = "";
String fileContent = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSave = findViewById(R.id.buttonSave);
btnLoad = findViewById(R.id.buttonLoad);
etInput = findViewById(R.id.etInput);
tvLoad = findViewById(R.id.tvLoad);
fileName = "myFile.txt";
filePath = "myFileDir";
if(!isExternalStorageAvailableForRW()){
btnSave.setEnabled(false);
}
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tvLoad.setText("");
fileContent = etInput.getText().toString().trim();
if(!fileContent.equals("")){
File myExternalFile = new File(getExternalFilesDir(filePath), fileName);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(myExternalFile);
fos.write(fileContent.getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
etInput.setText("");
Toast.makeText(MainActivity.this,"File Saved, check dir", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(MainActivity.this,"Textfield empty", Toast.LENGTH_SHORT).show();
}
}
});
}
private boolean isExternalStorageAvailableForRW() {
String extStorageState = Environment.getExternalStorageState();
if(extStorageState.equals(Environment.MEDIA_MOUNTED)){
return true;
}
return false;
}
}
对于
Java 7+
对于一次性任务,文件 class 让这变得简单:
try {
Files.write(Paths.get("filePath"), "the text".getBytes(), StandardOpenOption.APPEND);
}catch (IOException e) {
//exception handling left as an exercise for the reader
}
以上方法会抛出一个
NoSuchFileException
如果文件不存在。它也不会自动附加换行符(在附加到文本文件时通常需要这样做)。另一种方法是同时传递 CREATE 和 APPEND 选项,如果文件不存在,它将首先创建文件:
private void write(final String s) throws IOException {
Files.writeString(
Path.of(System.getProperty("java.io.tmpdir"), "filePath"),
s + System.lineSeparator(),
CREATE, APPEND
);
}
The Source