小编zxg*_*ear的帖子

mkdir()在内部闪存存储器内工作,但不是SD卡吗?

我目前正在构建一个文件管理应用程序,允许用户浏览其设备的文件系统.用户/从其设备的根目录开始,但可以浏览到他们想要的任何位置,例如内部闪存或SD卡.

此应用程序的一个关键要求是允许用户在任何地方创建新文件夹.像这样的功能对应用程序非常有用.但是,该File#mkdir()方法在SD卡目录中根本不起作用.

我为清单文件添加了适当的权限.我还写了一个测试,看看哪些目录(我的Lollipop 5.0设备上都存在)允许创建一个新文件夹.根据我的观察,File#mkdir()只有在内部闪存目录中才有效.

注意:请不要Environment#getExternalStorageDirectory()与SD卡位置混淆,如本文所述.同样在Lollipop 5.0上,我相信/storage/emulated/0//storage/sdcard0/参考内部闪存存储,/storage/emulated/1//storage/sdcard1/参考SD卡(至少对我正在测试的设备是真的).

如何在非root用户Android设备上的外部存储路径之外的区域中创建新文件和文件夹?


表现:

...
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
Run Code Online (Sandbox Code Playgroud)

测试:

...
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final String NEW_FOLDER_NAME = "TestFolder";
        testPath(new File(Environment.getExternalStorageDirectory(), NEW_FOLDER_NAME));
        testPath(new File("/storage/emulated/0/", NEW_FOLDER_NAME));
        testPath(new File("/storage/emulated/1/", NEW_FOLDER_NAME));
        testPath(new File("/storage/sdcard0/Download/", NEW_FOLDER_NAME));
        testPath(new File("/storage/sdcard1/Pictures/", NEW_FOLDER_NAME));
    }

    private void testPath(File path) {
        String TAG = …
Run Code Online (Sandbox Code Playgroud)

android file-permissions

32
推荐指数
1
解决办法
2779
查看次数

putchar()奇怪的输出,为什么会发生这种情况?

如果我在标准输入流中键入"Hello World"字样,该程序将打印出奇怪的盒子符号,而不是预期的"Hello World",返回标准输出.

#include <stdio.h>

int main(void)
{
    // print out all characters from the stream until '/n' character is found
    int ch;
    while (ch = getchar() != '\n')
    {
        putchar(ch);
    }
    putchar('\n');
}
Run Code Online (Sandbox Code Playgroud)

我知道如何解决这个问题.但为什么这行代码不正确?

while (ch = getchar() != '\n')
Run Code Online (Sandbox Code Playgroud)

c io operator-precedence putchar getchar

11
推荐指数
4
解决办法
1793
查看次数

如何在CLion IDE中显示行号?

我试图阅读并按照PyCharm和IntelliJ的说明启用此功能,但他们的设置菜单似乎与CLion的相同.

ide settings clion

5
推荐指数
1
解决办法
4998
查看次数

如何让JTextArea完全填满JPanel?

我希望我的JTextArea组件能够完全填满我的JPanel.正如你在这里看到的那样,在这张照片中,JTextArea周围有一些填充物(带有蚀刻边框的红色):

下面的程序图像.

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

public class Example
{
    public static void main(String[] args)
    {
    // Create JComponents and add them to containers.
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    JTextArea jta = new JTextArea("Hello world!");
    panel.add(jta);
    frame.setLayout(new FlowLayout());
    frame.add(panel);

    // Modify some properties.
    jta.setRows(10);
    jta.setColumns(10);
    jta.setBackground(Color.RED);
    panel.setBorder(new EtchedBorder());

    // Display the Swing application.
    frame.setSize(200, 200);
    frame.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing jpanel jtextarea layout-manager

3
推荐指数
1
解决办法
6397
查看次数

使用 JUnit 测试需要使用输入流模拟键盘输入的主要方法?

假设我有一个带有 main 方法的程序,该方法使用java.util.Scanner该类来接收用户输入。

import java.util.Scanner;

public class Main {
    static int fooValue = 0;

    public static void main(String[] args) {
        System.out.println("Please enter a valid integer value.");
        fooValue = new Scanner(System.in).nextInt();
        System.out.println(fooValue + 5);
    }
}
Run Code Online (Sandbox Code Playgroud)

这个程序所做的就是接收一个整数输入,并输出一个整数加 5。这意味着我可以想出一个这样的表:

+-------+-----------------+
| Input | Expected output |
+-------+-----------------+
|     2 |               7 |
|     3 |               8 |
|     5 |              12 |
|     7 |              13 |
|    11 |              16 |
+-------+-----------------+
Run Code Online (Sandbox Code Playgroud)

我需要对这组输入数据进行 JUnit 测试。处理这样的问题最简单的方法是什么?

java junit input

3
推荐指数
1
解决办法
7064
查看次数

Valgrind弄乱了strcmp()的返回值,为什么?

我目前正在使用valgrind-3.10.0.SVN,gcc 4.8.2和Ubuntu 14.04.这是我文件中的代码foo.c

#include <stdio.h>
#include <string.h>

int main()
{
    char foo[] = "Foo";
    char bar[] = "Bar";
    printf("%d\n", strcmp(foo, bar));
}
Run Code Online (Sandbox Code Playgroud)

我用这个命令编译:
gcc foo.c -o foo

这些是执行命令和输出:

./foo  
4

valgrind ./foo
1
Run Code Online (Sandbox Code Playgroud)

为什么Valgrind会影响我的strcmp()函数的输出?

c gcc valgrind

2
推荐指数
1
解决办法
330
查看次数

字体-如何定位字符串的左上角?

假设我想使用该java.awt.Graphics.drawString(String str, int x, int y)方法在某些特定坐标处绘制字符串,例如(300,300)。但是,该drawString()方法将始终将字符串的左下角定位在那些坐标处,而不是我想要的左上角。

在指定坐标处绘制字符串左上角的简单方法是什么?我知道该java.awt.FontMetrics实用工具类,但可以肯定它是否会有所帮助。

java fonts swing

2
推荐指数
1
解决办法
1342
查看次数

如何实时触发MouseMotionListener事件?

我正在尝试创建一个图形绘制程序,允许用户通过将鼠标拖到屏幕上来绘制红色像素.所以在某种程度上,您可以将此程序视为Microsoft的Paint程序,但只使用铅笔绘图工具和红色.

不幸的是mouseDragged(),我的程序中的功能无法正常工作.如果我移动鼠标太快,它会跳过屏幕上的一些像素,如下所示:

在此输入图像描述

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FrameView extends JFrame {
    JPanel panel;
    Graphics2D drawingContext;

    public static void main(String[] args) {
        new FrameView();
    }

    public FrameView() {
        panel = new JPanel();
        panel.addMouseMotionListener(new MouseControls());
        panel.setBackground(Color.WHITE);
        this.add(panel);
        this.setSize(new Dimension(500, 500));
        this.setTitle("Drawing Program");
        this.setVisible(true);
        drawingContext = (Graphics2D)panel.getGraphics();
    }

    private class MouseControls extends MouseAdapter {
        @Override
        public void mouseDragged(MouseEvent e) {
            int x = e.getX();
            int y = e.getY();

            final int WIDTH = 1;
            final int HEIGHT = 1; …
Run Code Online (Sandbox Code Playgroud)

java swing awt

2
推荐指数
1
解决办法
586
查看次数

Java的声音API不适用于所有.WAV文件?

我目前在使用javax.sound.sampled图书馆时遇到了麻烦.这是我用来播放音频文件的MCV代码:

import javax.sound.sampled.*;
import java.io.File;

public class Foo
{
    public static void main(String[] args)
    {
        try
        {
            File f = new File("alarm.wav");
            AudioInputStream ais = AudioSystem.getAudioInputStream(f);
            Clip clip = AudioSystem.getClip();

            clip.open(ais);
            clip.start();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码有时会抛出一个UnsupportedAudioFileException.

基本上,我有5个.WAV文件,我知道这些文件没有损坏,因为当我在我的音乐播放软件中打开它们时它们完全没问题.但是,Java程序仅适用于其中的3个.

Oracle在此提及对此文件格式的支持.如何确保所有.WAV文件都与Java的音频API兼容?是否有一种万无一失的播放.WAV文件的方式,如果由于某种原因他们没有适当的编码?

java audio exception

1
推荐指数
1
解决办法
1356
查看次数

如何为结构的struct成员赋值?

我正在学习C中的嵌套结构,我想要做的是能够为我的struct的成员结构赋值.我无法搞清楚这一点,我不想强​​迫自己在结构初始化中初始化成员结构.当我尝试编译此代码时,为什么一直出现错误?

main.c: In function 'main':
main.c:16:23: error: expected expression before '{' token
  fooPerson.fullname = {"Foo", 'B', "Baz"};
Run Code Online (Sandbox Code Playgroud)

 

#define LEN 20

struct names {
    char first[LEN];
    char middle;
    char last[LEN];
};

struct person {
    struct names fullname;
};

int main() {
    struct person fooPerson;
    fooPerson.fullname = {"Foo", 'B', "Baz"};

    // NOT this: it works, but not the solution I'm asking for
    // struct person fooPerson = {{"Foo", 'B', "Baz"}};
}
Run Code Online (Sandbox Code Playgroud)

c struct nested

1
推荐指数
1
解决办法
191
查看次数