public class MainActivity extends Activity {
FileInputStream fistream2,fistream1;
File newFile=new File(Environment.getExternalStorageDirectory()
+File.separator
+"newfolder" //folder name
+File.separator
+"media"
+File.separator
+"player"+File.separator+"theonkar10.mp3");
File newFile1=new File(Environment.getExternalStorageDirectory()
+File.separator
+"newfolder" //folder name
+File.separator
+"media"
+File.separator
+"player"+File.separator+"1.mp3");
File newFile2=new File(Environment.getExternalStorageDirectory()
+File.separator
+"newfolder" //folder name
+File.separator
+"media"
+File.separator
+"player"+File.separator+"2.mp3");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
myMethod();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void myMethod() throws IOException
{
FileInputStream fistream1 = new FileInputStream(newFile1.getAbsolutePath()); // first source file
FileInputStream fistream2= new FileInputStream(newFile2.getAbsolutePath());//second source file
//SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2);
SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2);
// FileOutputStream fostream = new FileOutputStream("C:\\Temp\\final.mp3");//destinationfile
FileOutputStream fostream=new FileOutputStream(newFile.getAbsolutePath(),true);
if(!newFile.exists()){
newFile.mkdirs();
int temp;
while( ( temp = sistream.read() ) != -1)
{
System.out.print( (char) temp ); // to print at DOS prompt
fostream.write(temp); // to write to file
}
fostream.close();
sistream.close();
fistream1.close();
fistream2.close();
}
}
}
我收到一个新文件theonkar10.mp3,但文件是0字节。可能我错过了一个简单的步骤。
答案 0 :(得分:1)
让这件事工作的三件事^^
创建FILE而不是目录!
newFile.createNewFile();
然后另一个重要的部分是:在创建文件后创建fileoutputstream!
第三,似乎sequenceinputstream对我不适合,当我使用two-arguemnt-constructor时,而是使用带有枚举器的构造函数。
这是摘要^^
public void myMethod() throws IOException
{
FileInputStream fistream1 = new FileInputStream(newFile1 ); // first source file
FileInputStream fistream2= new FileInputStream(newFile2 );//second source file
Vector<FileInputStream> v = new Vector<FileInputStream>();
v.add(fistream1);
v.add(fistream2);
SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2);
if(!newFile.exists()){
newFile.createNewFile();
FileOutputStream fostream=new FileOutputStream(newFile, true);
int temp;
while( ( temp = sistream.read() ) != -1)
{
System.out.print( (char) temp ); // to print at DOS prompt
fostream.write((byte)temp); // to write to file
}
fostream.close();
sistream.close();
fistream1.close();
fistream2.close();
}
}
它与我的环境一起工作......