java中直接使用AudioInputStream类来 *** 作音乐文件,获取时长,实例如下:
import javaioFile;
import javaioIOException;
import javaxsoundsampledAudioInputStream;
import javaxsoundsampledAudioSystem;
import javaxsoundsampledClip;
import javaxsoundsampledLineUnavailableException;
import javaxsoundsampledUnsupportedAudioFileException;
public class AudioLength {
public static void main(String[] args) throws LineUnavailableException,
UnsupportedAudioFileException, IOException {
File file = new File("d:/testwav");
Clip clip = AudioSystemgetClip();
AudioInputStream ais = AudioSystemgetAudioInputStream(file);
clipopen(ais);
Systemoutprintln( clipgetMicrosecondLength() / 1000000D + " s" );//获取音频文件时长
}
}
您可以使用以下代码来实现您的需求:
该代码会创建一个 FileInputStream 对象,该对象将从指定的文件路径中读取数据。然后,它会创建一个长度为 1024 的字节数组,并使用 fisread(buf) 方法将文件内容读取到该数组中。最后,它会将读取到的内容输出到控制台,并关闭输入流。
Try again
//根据你的要求修改了一下代码,现在已经能将某文件夹下的所有指定类型文件复制到
//指定文件夹下了
import javaioBufferedInputStream;
import javaioBufferedOutputStream;
import javaioFile;
import javaioFileInputStream;
import javaioFileOutputStream;
public class ReadFiles {
public static final String FILTER = "xml";
public static final String SRC_DIR = "E:\\StudyData";// 待扫描的文件夹
public static final String DES_DIR = "E:\\testdata";// 复制后的目标文件夹
public static void main(String[] args) {
long a = SystemcurrentTimeMillis();
scanDir(SRC_DIR, DES_DIR);
Systemoutprintln("共花费时间:"+(SystemcurrentTimeMillis() - a)/1000+"秒");
}
public static void scanDir(String srcPath, String desPath) {
File dir = new File(srcPath);
File[] files = dirlistFiles();
if (files == null)
return;
for (int i = 0; i < fileslength; i++) {
if (files[i]isDirectory()) {
scanDir(files[i]getAbsolutePath(), desPath);
} else {
String strFileName = files[i]getAbsolutePath()toLowerCase();
copyFile(strFileName, desPath + files[i]getName());
}
}
}
public static void copyFile(String srcName, String destName) {
if (srcNameendsWith(FILTER)) {
Systemoutprintln("正在复制文件 "+srcName+" 至 "+destName);
try {
BufferedInputStream in = new BufferedInputStream(
new FileInputStream(srcName));
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(destName));
int i = 0;
byte[] buffer = new byte[2048];
while ((i = inread(buffer)) != -1) {
outwrite(buffer, 0, i);
}
outclose();
inclose();
} catch (Exception ex) {
exprintStackTrace();
}
}
}
}
1:Jsp页面:
[html] view plain copy
<td><img src="${ctx}/mongoImg/show"></td>
2:xml配置:
[html] view plain copy
<xml version="10" encoding="UTF-8">
<beans xmlns=">
xmlns:xsi=">
xmlns:mongo=">
xsi:schemaLocation=">
>
>
>
>
>
<mongo:mongo host="${resourcedbhost}" port="${resourcedbport}" />
<mongo:db-factory id="mongoDbFactory" dbname="gate" mongo-ref="mongo" />
<bean class="orgspringframeworkdatamongodbgridfsGridFsTemplate">
<constructor-arg ref="mongoDbFactory" />
<constructor-arg ref="converter" />
</bean>
<mongo:mapping-converter id="converter"/>
</beans>
3:java后台代码
[java] view plain copy
package comcrscicigmsmanagerweb;
import javaioOutputStream;
import javautilList;
import javaxservlet>
import javaxservlet>
import orgspringframeworkbeansfactoryannotationAutowired;
import orgspringframeworkdatamongodbgridfsGridFsTemplate;
import orgspringframeworkstereotypeController;
import orgspringframeworkwebbindannotationRequestMapping;
import commongodbgridfsGridFSDBFile;
@Controller
@RequestMapping(value = "/mongoImg")
public class MongoImgController {
@Autowired
GridFsTemplate gridFsTemplate;
@RequestMapping(value = "/show")
public void show(>
try {
OutputStream out = respgetOutputStream();
respsetContentType("image/png");
List<GridFSDBFile> find = gridFsTemplatefind(null);
GridFSDBFile gridFSDBFile = findget(0);
gridFSDBFilewriteTo(out);
outflush();
outclose();
} catch (Exception e) {
eprintStackTrace();
}
}
}
在JAVA代码中,因为只是个例子而已,所以我使用的是gridFsTemplatefind(null);查询的全部,而且数据库中只有2条数据,我这里就把第一条数据查出来作为例子了。各位可以根据自己的业务需要,在页面传递参数进来,并且查询特定的数据。/
根据提供地址读取文件返回字符串
@param filePath
@return 文件字符串
/
private String readFile(String filePath){
File javaFile = new File(filePath);
StringBuffer fileStr = new StringBuffer();//存储杜浒的文件字符串,
int b;
InputStream fileIns = null;
InputStreamReader fileReder = null;
try {
fileIns = new FileInputStream(javaFile);
fileReder = new InputStreamReader(fileIns, "utf-8");
while ((b = fileRederread()) != -1) {
fileStrappend((char) b);
}
// Systemoutprintln(javaStrtoString());
} catch (FileNotFoundException e) {
eprintStackTrace();
} catch (IOException e) {
eprintStackTrace();
} finally {
try {
if (fileReder != null) {
fileRederclose();
}
if (fileIns != null) {
fileInsclose();
}
} catch (IOException e) {
eprintStackTrace();
}
}
if(fileStrlength()>0){
return fileStrtoString();
}else{
return "";
}
// Systemoutprintln(result);
}
仅供参考!
Java只能读取到文件的最后修改时间,不能获取创建时间,
创建时间是利用了cmd命令获取的:
public class FileTest {
public static void main(String[] args) {
getCreateTime("d:\\test-1txt");
getModifiedTime("d:\\test-1txt");
}
public static void getCreateTime(String filePath) {
String strTime = null;
try {
Process p = RuntimegetRuntime()exec("cmd /C dir " + filePath + "/tc");
InputStream is = pgetInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = brreadLine()) != null) {
if (lineendsWith("txt")) {
strTime = linesubstring(0, 17);
break;
}
}
} catch (IOException e) {
eprintStackTrace();
}
Systemoutprintln("创建时间 " + strTime);
}
public static void getModifiedTime(String filePath) {
long time = new File(filePath)lastModified();
String ctime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")format(new Date(time));
Systemoutprintln("修改时间[1] " + ctime);
}
}
你来看下这句话
farmers[i]price=IntegerparseInt(t1[0]);//编译器说这行错了,为什么啊?
farmers[i]amount=IntegerparseInt(t1[1]);
farmers[i]存的是一个对象farmer,你还没有new这个对象,你直接就令数组里面的farmers[i]price=int这个是不正确的,因为farmers[i]price根本不存在,所以会抛出nullpoint错误。
正确的做法是先Farmer f = new Farmer();
然后令fprice=IntegerparseInt(t1[0]);
然后再存进数组farmers[i]=f
注意:帮你写的是内部类,Farmer f = new Farmer()可能读取不到,所以建议你单独写一个farmer类,然后引用,希望对你有帮助
以上就是关于如何使用Java代码获取播放文件的时长全部的内容,包括:如何使用Java代码获取播放文件的时长、编JAVA程序获取指定D盘下file.txt内容要求创建一个fis字节输入流对象一个buf字节组长度定义为1024整数倍、java怎么样获取路径下的文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)