package xuan;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.Buffer;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
public class mp3 {
public static void cutMusic() throws IOException{
File file=new File("E:\\薛之谦 - 那是你离开了北京的生活.flac");
File file2=new File("E:\\music");
FileInputStream fis =new FileInputStream(file);
FileOutputStream fos=null;
//if(file2.exists()!=true) {
// file2.mkdirs();
//}
int len=0;
int x=0;
int y=1020*1024;
byte [] one=new byte[y];
if(file.length()%y!=0) {
x=(int)(file.length()/y+1);
}else if(file.length()%y==0) {
x=(int)(file.length()/y);
}
for(int i=1;i<=x;i++) {
len=fis.read(one);
fos=new FileOutputStream (new File(file2,i+".flac"));
fos.write(one,0,len);
}
fis.close();
fos.close();
}
public static void mergeMusic()throws IOException{
File file=new File("E:\\merge.flac");
File file2=new File("E:\\music");
// if(file.exists()!=true) {
// file.createNewFile();
// }
File[]f=file2.listFiles();
FileInputStream fis=null;
FileOutputStream fos=new FileOutputStream(file);
BufferedOutputStream bos =new BufferedOutputStream(fos,1024*1024);
int len=0;
for(int i=0;i<f.length;i++) {
fis =new FileInputStream(f[i]);
BufferedInputStream bis =new BufferedInputStream(fis,1024*1024);
while((len=bis.read())!=-1) {
bos.write(len);
}
fos.flush();
fis.close();
}
bos.close();
fos.close();
}
public static void main(String[] args) throws IOException{
cutMusic();
mergeMusic();
// TODO Auto-generated method stub
}
}
B. 如何用Java分割大txt文件
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class FileCutter { /** * *sourceFile:源文件的路径 *targetDirectory:保存文件的目录(例:'C:\\') *prefix:是分割后文件的前缀(例:'2015-09-09') *size:是分隔后单一文件的大小单位是2kb的倍数,size传10,分割后单一文件就是20K。传100,文件就是2M一个。 * **/ public static void cutToMoreFile(String sourceFile, String targetDirectory, String prefix, int size) { //加载源文件 File source = new File(sourceFile); InputStream in = null; OutputStream out = null; int len = 0; int fileIndex = 1; //设置一次加载的大小 byte[] buffer = new byte[2048]; try { //把源文件读到InputStream中 in = new FileInputStream(source); //循环 while(true) { //分割后的文件流 out = new FileOutputStream(targetDirectory + File.separator + prefix + fileIndex++ + ".txt"); for(int i = 0; i < size; i++) { //如果文件读取完就退回方法。 if((len = in.read(buffer)) != -1) { //写入分割后的文件 out.write(buffer, 0, len); }else { //执行finally内容后,退出方法 return; } } } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { try { //关系流 in.close(); out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
C. java文本分割并存入数组
把所有的字符看做一个字符串,以#截取,保存到数组1中,再遍历数组1,以/截取,再保存到子数组
private static String string = "文件名.txt 关键字/词性/权重/出现个数#关键字/词性/权重/出现个数#文件名.txt 关键字/词性/权重/出现个数#关键字/词性/权重/出现个数#文件名.txt 关键字/词性/权重/出现个数#关键字/词性/权重/出现个数#";
public static void main(String[] args) {
String[] strings = string.split("#");
for (int i = 0; i < strings.length; i++) {
String[] strings2 = strings[i].split("/");
for (int j = 0; j < strings2.length; j++) {
//在这里做保存的操作
System.out.print(strings2[j] + " ");
}
}
}
D. java 多线程 分割文件
在分割文件部分:
文件长度S,线程N。每块D=S/N;
线程1 上传范围回 0....D
线程2 上传范围 D+1....2*D
线程3 上传范围 2*D+1....3D
线程N 上传范围 (N-1)*D+1....N*D
某一答个上传完,再找其他线程未下载的范围对半分..
E. java简单问题,分割字符串
s.split(".")这个操作可以将字符串按照点进行分割,返回一个包含分割后字符串的数组。例如,如果有一个字符串"example.string.split",使用s.split(".")后,会得到一个包含"example"和"string.split"的数组。这在处理包含点分隔符的数据时非常有用,比如在解析URL或者邮件地址时。
对于逗号分隔的字符串,比如从CSV文件中读取的数据,可以使用split(",")来分割。例如,"value1,value2,value3,value4"会被分割成一个包含"value1"、"value2"、"value3"、"value4"的数组。这样就可以方便地逐个读取每个字段,而不必处理逗号。
有时候,你可能需要从一个文件名中截取文件名而不包含文件扩展名。例如,如果有一个文件名"123.jpg",你可能想要得到"123"。可以使用字符串的substring方法来实现。例如,String a = "123.jpg"; String after = a.substring(0,a.length()-4); 这段代码会返回"123"。这里是从字符串的开头截取到倒数第四个字符,即最后的".jpg"之前的字符。
在一些情况下,可能不知道具体的位置。这时可以使用indexOf方法来查找特定字符的位置。例如,int index = a.indexOf(".")可以得到"."字符第一次出现的位置。然后你可以使用substring方法从起始位置截取到该位置,或从该位置截取到字符串结束。
总的来说,split、substring和indexOf是处理字符串分割和截取的常用方法。它们可以让你更灵活地处理和操作字符串数据。
使用这些方法时,需要注意边界情况。例如,如果字符串中不存在特定的分隔符,或者字符串为空,那么split方法会返回一个空数组。同时,substring方法需要确保起始位置小于结束位置,否则会抛出异常。
通过这些方法,你可以更高效地处理和解析字符串数据,从而更好地满足不同的需求。