- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用一个应用程序创建一个 csv 文件,然后我想导出并在手机上阅读。但是,我将其保存到的位置不可见,并且难以传输。
有没有办法将其保存到更容易访问的位置,例如电话上的/documents ?
(我对 Java 很陌生,如果这是一个明显的问题,我很抱歉)
谢谢!
public void submit(View v)
{
String nline = System.getProperty("line.separator");
String fname = firstName.getText().toString() + ",";
String sname = surname.getText().toString() + ",";
String gender = genderSpin.getSelectedItem().toString() + ",";
String eaddress = email.getText().toString() + ",";
String mnum = mobile.getText().toString() + ",";
String fos = course.getText().toString() + ",";
String prole = proleSpin.getSelectedItem().toString();
FileOutputStream file = null;
if(fname.length() <= 1 || sname.length() <= 1 || eaddress.length() <= 1){
Toast.makeText(this, "Please enter all mandatory fields", Toast.LENGTH_SHORT).show();
}
else {
try {
file = openFileOutput(fileName, MODE_APPEND);
file.write(fname.getBytes());
file.write(sname.getBytes());
file.write(gender.getBytes());
file.write(eaddress.getBytes());
if (mnum.length() < 11) {
mnum = "null,";
file.write(mnum.getBytes());
}
if (fos.length() <= 1) {
fos = "null,";
file.write(fos.getBytes());
}
file.write(prole.getBytes());
file.write(nline.getBytes());
firstName.getText().clear();
surname.getText().clear();
genderSpin.setSelection(0);
email.getText().clear();
mobile.getText().clear();
course.getText().clear();
proleSpin.setSelection(0);
Toast.makeText(this, "Successfully Submitted", Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (file != null) {
try {
file.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
最佳答案
先加WRITE_EXTERNAL_STORAGE
到您的 list 文件。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
if(!checkPermission()){
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
} else {
// No explanation needed; request the permission
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
WRITE_PERMISSION);
}
}
else {
// Permission already granted
}
MainActivity.class
package co.introtuce.nex2me.writefle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class MainActivity extends AppCompatActivity {
public static final int WRITE_PERMISSION=0xff;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=findViewById(R.id.mid);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
requestPermission();
}
});
}
public void requestPermission(){
if(!checkPermission()){
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed; request the permission
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
WRITE_PERMISSION);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
else {
afterPermisiion();
}
}
public boolean checkPermission(){
if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED){
return false;
}
return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == WRITE_PERMISSION){
if(grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
//Permisiion Granted
afterPermisiion();
return;
}
}
requestPermission();
}
public void afterPermisiion(){
submit();
}
public boolean saveFile(String csv_contents, Context context){
OutputStream outputStream = null;
try{
File root = Environment.getExternalStorageDirectory();
if(root == null){
Log.d("SAVE_PHONE", "Failed to get root");
return false;
}
// create a directory
File saveDirectory = new File(root,"appName/files/csv" );
// create direcotory if it doesn't exists
// create direcotory if it doesn't exists
if(!saveDirectory.exists()) if ( !saveDirectory.mkdirs()){
Toast.makeText(context,"sorry could not create directory"+saveDirectory.getAbsolutePath(), Toast.LENGTH_LONG).show();
return false;
}
outputStream = new FileOutputStream( saveDirectory + "myfile.csv"); // filename.png, .mp3, .mp4 ...
if(outputStream != null){
Log.e( "SAVE_PHONE", "Output Stream Opened successfully");
}
byte[] bytes = csv_contents.getBytes();
outputStream.write( bytes, 0, bytes.length );
outputStream.close();
return true;
}catch (Exception e){
Log.d("EXCEPTION_IN",e.toString());
return false;
}
}
public void submit()
{
String nline = System.getProperty("line.separator");
String fname = "Name" + ",";
String sname = "Surname" + ",";
String gender = "gn" + ",";
String eaddress = "email" + ",";
String mnum = "num" + ",";
String fos = "fos" + ",";
String prole = "prole";
FileOutputStream file = null;
if(fname.length() <= 1 || sname.length() <= 1 || eaddress.length() <= 1){
Toast.makeText(this, "Please enter all mandatory fields", Toast.LENGTH_SHORT).show();
}
String csv_contents = nline+""+fname+sname+gender+eaddress+mnum+fos+prole;
if(saveFile(csv_contents,this)){
//File has saved
// DO something
Toast.makeText(this,"File has been saved",Toast.LENGTH_LONG).show();
}
else{
//Could not save file
// DO something
}
}
}
/storage/emulated/0/appName/files/csv
地点。您可以修改此位置。
关于java - 安卓工作室 : file written to another directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59627011/
当我尝试构建我的项目时,我遇到了这样的错误: FAILURE: Build failed with an exception. * What went wrong: Execution failed
我正在尝试从 Here 构建适用于 linux 3.7 内核的 Mali 驱动程序. 有一个单独的构建脚本,例如, #!/bin/bash export KDIR=/path/to/kernel/di
有没有一种方法可以使用普通的 lisp 创建目录。我想先创建一个文件夹,然后将我的 .txt .png 文件放入其中。我知道首先我可以在外部创建文件夹,然后使用 with-open-file 等在目录
Visual Studio 提示每次编译警告 MSB8029:中间目录或输出目录不能位于临时目录下,因为它可能导致增量构建出现问题。 我正在检查项目并更改了输出目录和中间目录,但我仍然在我的解决方案中
Visual Studio 提示每次编译警告 MSB8029:中间目录或输出目录不能位于临时目录下,因为它可能导致增量构建出现问题。 我正在检查项目并更改了输出目录和中间目录,但我仍然在我的解决方案中
我的客户安装了 Keycloak 以从 AWS Cognito 代理用户。 我需要这个 Keycloak 来代理来自 Azure Active Directory 的用户。 客户拥有 AAD 的 OF
我想从 macOS 上 parallel 命令的所有潜力中受益(似乎存在 2 个版本,GNU 和 Ole Tange 的版本,但我不确定)。 使用以下命令: parallel -j8 find {}
我需要实现一个 Active Directory(本地)管理器,用户可以在其中执行所有任务,例如添加用户、删除用户、分配许可证和分配组等。用户有用户名、密码和域 Controller 名称,所以他只需
我正在编写一个使用PHP adLDAP库与Active Directory交互的应用程序。 为了测试该应用程序,我需要使用Active Directory架构的本地LDAP DB以及示例数据。 我已经
我有一个包含两个域 AA.RR.COM 和 BB.RR.COM 的 Active Directory 林,其中包含用户和组。我需要搜索两个域中的用户,同时查询其中一个域(例如 AA.RT.COM)如何
我使用 Proxy-Address 属性作为确定用户电子邮件地址的主要方法(我只关心以“SMTP:”或“smtp:”为前缀的地址,此外,我使用以大写字母为前缀的地址SMTP 来确定主地址 - 这不是
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
所以我有一个目录 - 让我们说/dir/。在里面我有这些文件夹-/目录/fold1//目录/fold2//dir/fold3/ 这些文件夹 (fold1,2,3) 中的每一个都可能包含一个名为 foo
我正在使用 PHPmotion 在我本地的 ubuntu 机器上。 优步上传者在 phpmotion 中用于将文件上传到服务器。这是使用 perl 脚本(位于“ www/cgi-bin ”)上传文件。
我正在为我的公司开发一个基于 Web 的 Intranet。我只想知道用户使用事件目录登录详细信息登录应用程序是一件好事,还是我应该与应用程序数据库一起创建登录名。如果有什么比这更好的,请提出建议。这
我们有带有 AD 模块 1.0.4 的 Sitecore 6.5。 DEPARTMENT\SitecoreUsers AD 组中的用户可以登录 Sitecore,但 DEPARTMENT\Siteco
我使用的 AD 设置具有存储为(多个)安全组成员的用户。 我正在使用读取用户的 memberof 属性的软件来计算访问权限。 在 AD Explorer 中,我可以看到用户的 memberof 属性显
我们有一个在 .NET 上编写的 SaaS 应用程序,我们需要为我们的客户提供各种 SSO 方法。 不久前,我们对 OpenID 进行了标准化,希望这会成为一个通用标准,让我们不必支持不同的标准。不幸
我有 .Net 代码可以读取/写入我们本地的 Active Directory 域。阅读部分已经过测试并且工作正常,但我想测试“写作”部分。我的应用程序将修改事件目录中的一些用户配置文件,但我不想在实
我正在运行一个 ASP.NET 4.0 应用程序,它使用用户名(即 HttpContext.Current.Request.LogonUserIdentity.Name.ToString())来管理对
我是一名优秀的程序员,十分优秀!