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();
}
}
}
I am getting a new file theonkar10.mp3 but the file is of 0 bytes.Probably I am missing a simple step.
three things to get this thing working ^^
create the FILE not the directory!
newFile.createNewFile();
then another important part is: create the fileoutputstream AFTER you created the file!
and third, it seems the sequenceinputstream works not properly for me, when i use the two-arguemnt-constructor, instead use the constructor with the enumerator.
here's the summary ^^
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();
}
}
it's working here with my env...