在android中,当我将一个文件从原始文件夹移动到SD卡时,该文件赢了';别动
我使用以下代码将音频文件表单在android中,当我将一个文件从原始文件夹移动到SD卡时,该文件赢了';别动,android,Android,我使用以下代码将音频文件表单res/raw文件夹移动到SD卡,当我执行此代码时,文件不会移动。为什么会发生,在这一行我犯了错误 MoveAudio.java public class MoveAudioextends Activity { /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCrea
res/raw
文件夹移动到SD卡,当我执行此代码时,文件不会移动。为什么会发生,在这一行我犯了错误
MoveAudio.java
public class MoveAudioextends Activity {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button a = (Button) findViewById(R.id.Button01);
a.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
byte[] buffer = null;
InputStream fIn = getBaseContext().getResources()
.openRawResource(R.raw.song);
int size = 0;
System.out.println("<<<<<<<SIZE>>>>>>>>>>>>>>>>>>>>" + fIn);
try {
size = fIn.available();
System.out
.println("<<<<<<<SIZE>>>>>>>>>>>>>>>>>>>>" + size);
buffer = new byte[size];
fIn.read(buffer);
fIn.close();
} catch (IOException e) {
// TODO Auto-generated catch block
}
String path = "/sdcard/media/audio/ringtones/";
String filename = "examplefile" + ".ogg";
boolean exists = (new File(path)).exists();
if (!exists) {
System.out
.println("<<<<<<<FALSE SO INSIDE THE CONDITION>>>>>>>>>>>>>>>>>>>>");
new File(path).mkdirs();
}
FileOutputStream save;
try {
save = new FileOutputStream(path + filename);
System.out
.println("<<<<<<<SAVE>>>>>>>>>>>>>>>>>>>>" + save);
save.write(buffer);
save.flush();
save.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.parse("file://" + path + filename)));
File k = new File(path, filename);
System.out.println("<<<<<<<SAVE>>>>>>>>>>>>>>>>>>>>" + k);
}
});
}
}
公共类活动{
/**在首次创建活动时调用*/
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
按钮a=(按钮)findViewById(R.id.Button01);
a、 setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
字节[]缓冲区=空;
InputStream fIn=getBaseContext().getResources()
.openrawsource(R.raw.song);
int size=0;
系统输出打印项次(“>>>>>>>>>>”+fIn);
试一试{
尺寸=鳍。可用();
系统输出
.println(“>>>>>>>>”+尺寸);
缓冲区=新字节[大小];
fIn.read(缓冲区);
fIn.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
}
String path=“/sdcard/media/audio/ringtones/”;
String filename=“examplefile”+”.ogg”;
布尔存在=(新文件(路径)).exists();
如果(!存在){
系统输出
.println(“>>>>>>>>”);
新文件(路径).mkdirs();
}
FileOutputStream保存;
试一试{
保存=新文件输出流(路径+文件名);
系统输出
.println(“>>>>>>>>>”+保存);
保存、写入(缓冲区);
save.flush();
save.close();
}catch(filenotfounde异常){
//TODO自动生成的捕捉块
}捕获(IOE异常){
//TODO自动生成的捕捉块
}
sendBroadcast(新意图)(Intent.ACTION\u MEDIA\u SCANNER\u SCAN\u文件,
parse(“文件:/”+路径+文件名));
文件k=新文件(路径、文件名);
系统输出打印项次(“>>>>>>>>”+k);
}
});
}
}
在xml文件中,我有一个sing按钮,当我单击该按钮时,文件将移动。此代码执行时不会出错,但文件不会移动。请尝试将这些内容写出,而不要使用空的catch块
e.printStackTrace();
// I believe it is.
此外,您是否具有写入SD卡的权限
permission.WRITE_EXTERNAL_STORAGE
不要有空的catch块,试着把它们写出来
e.printStackTrace();
// I believe it is.
此外,您是否具有写入SD卡的权限
permission.WRITE_EXTERNAL_STORAGE
资源文件夹中歌曲的文件名是什么?我询问的原因是,对于压缩的文件,有一个可以读回的最大文件大小。如果您的文件以.ogg扩展名命名,则不应压缩,因此不受此限制。但是,如果您将其命名为其他被压缩的名称,则可能存在此问题 记录错误的一个好方法是使用androids日志方法。这样做:
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
Log.e(TAG, "FileNotFoundException", e);
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e(TAG, "IOException", e);
}
您可能会收到“数据超过解压数据最大值(1290892 vs 1048576)”消息
但唯一确定的方法是记录错误。也可能SD卡空间不足或您没有写入权限。资源文件夹中歌曲的文件名是什么?我询问的原因是,对于压缩的文件,有一个可以读回的最大文件大小。如果您的文件以.ogg扩展名命名,则不应压缩,因此不受此限制。但是,如果您将其命名为其他被压缩的名称,则可能存在此问题 记录错误的一个好方法是使用androids日志方法。这样做:
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
Log.e(TAG, "FileNotFoundException", e);
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e(TAG, "IOException", e);
}
您可能会收到“数据超过解压数据最大值(1290892 vs 1048576)”消息
但唯一确定的方法是记录错误。也可能SD卡空间不足或您没有写入权限。在本例中,我的原始文件是“test.pdf” 我们将使用手机中的“下载”文件夹。 原始文件夹中的“test.pdf”将作为“example.pdf”移动到“Download/test_filemove”文件夹 在“res”文件夹中创建新的“raw”文件夹。 将“test.pdf”复制到“raw”文件夹 当然,你应该在布局中使用按钮01 不要忘记在清单文件中授予权限,如下所示
我只是稍微修改一下你的例子
公共类MainActivity扩展了活动{
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
按钮a=(按钮)findViewById(R.id.Button01);
a、 setOnClickListener(新视图。OnClickListener(){
公共void onClick(视图v){
字节[]缓冲区=空;
InputStream fIn=getBaseContext().getResources()
.openRawResource(R.raw.test);
int size=0;
系统输出打印项次(“>>>>>>>>>>”+fIn);
试一试{
尺寸=鳍。可用();
系统输出
.println(“>>>>>>>>”+尺寸);
缓冲区=新字节[大小];
fIn.read(缓冲区);
fIn.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
}
字符串路径=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_下载)+“/test_filemove/”;
String filename=“示例”+“.pdf”;
布尔存在=(新文件(路径)).exists();